docker と docker compose で web アプリを docker 化する方法
GitHub に上がっている Rails アプリを Docker 化した手順をまとめてみました。
使用環境 | |
---|---|
OS | Windows |
エディタ | VSCode |
エラー
shebang line ending with \r may cause problems
上記のエラーが docker-compose build の際に発生しました。
上記のエラーが発生する理由は Linux と Windows の改行コードの違いによるものです
そのため お使いの OS が Windows の場合エラーが発生しないように事前にターミナルから設定を行いエラーを回避します。
$ git config --global core.autocrlf false
上記の設定を行うことで git clone を行う際に改行コードが LF から CRLF に自動で変換されるのを防ぎます。
1. リポジトリをクローンしてローカルの環境を作成
$ git clone <リポジトリ名>
2. クローンしたリポジトリのディレクトリに移動する
$ cd <リポジトリ名>
3. Dockerfile を作成
$ code Dockerfile
Dockerfileの内容
FROM ruby:3.2.2 RUN apt-get update -qq && apt-get install -y \ build-essential \ libpq-dev \ nodejs \ postgresql-client \ yarn WORKDIR /rails-docker COPY Gemfile Gemfile.lock /rails-docker/ RUN bundle install
4. docker-compose.yml を作成
$ code docker-compose.yml
docker-compose.ymlの内容
version: '3' volumes: db-data: services: web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: - '3000:3000' volumes: - '.:/rails-docker' environment: - 'DATABASE_PASSWORD=postgres' tty: true stdin_open: true depends_on: - db links: - db db: image: postgres:12 volumes: - 'db-data:/var/lib/postgresql/data' environment: - 'POSTGRES_USER=postgres' - 'POSTGRES_PASSWORD=postgres' - 'POSTGRES_HOST_AUTH_METHOD=trust'
5.database.yml を編集する
$ code config/database.yml
database.ymlの内容
default: &default adapter: postgresql encoding: unicode + host: db + user: postgres + port: 5432 + password: <%= ENV.fetch("DATABASE_PASSWORD") %> # For details on connection pooling, see Rails configuration guide # https://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
6. docker-compose
1. docker-compose build を行い Docker image を作成します
$ docker-compose build
2. docker-compose up -d を行いコンテナを作成
$ docker-compose up -d
3. docker-compose exec web bash コンテナを起動しコンテナに入る
$ docker-compose exec web bash
7. DB の作成
1. DataBase を作成する
$ rails db:create
2. DataBase を更新する
$ rails db:migrate
8. 動作確認を行う
localhost:3000 にアクセスを行い動作を確認する
参照
Docker について
https://docs.docker.jp/compose/rails.html
https://www.udemy.com/course/aidocker/