Docker composeを使用してrails環境構築してみる

目次

環境

・Windows 11 Home
・WSL2
・Docker Desktop for Windows 4.12.0
・ubuntu 22.04

Docker関連のファイルを用意する

作業するディレクトリの中に、srcのディレクトリ・Dockerfile・docker-compose.ymlを作成します。

srcディレクトリの中にGemfileを作成します。

Dockerfile

FROM ruby:2.7

# 必要なライブラリのインストール(node.js・yarnをインストール)
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
  && apt-get update -qq \
  && apt-get install -y nodejs yarn

# 作業ディレクトリを指定
WORKDIR /app
# railsのアプリケーションをコードをDockerのappディレクトリに置く
COPY ./src /app
# ruby関連のライブラリのインストール
RUN bundle config --local set path 'vendor/bundle' \
  && bundle install

Gemfile

source 'https://rubygems.org'

gem 'rails', '~> 6.1.0'

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:8.0
    # Mysql8.0の認証形式が変わったため実行するコマンド
    command: --default-authentication-plugin=mysql_native_password
    # ローカルディレクトリ:Dockerのディレクトリ (ローカルのディレクトリの同期)
    volumes:
      - ./src/db/mysql_data:/var/lib/mysql
    # 環境変数でパスワードを指定
    environment:
      MYSQL_ROOT_PASSWORD: password
  web: 
    # 同じ階層のDockerfileを使用する宣言 
    build: .
    # 実行するコマンド (Railsサーバーを起動する)
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    # ローカルとDocker側のファイル共有
    volumes:
      - ./src:/app
    # ローカルのポートとDocker側のポート指定 
    ports:
      - "3000:3000"
    # 依存関係-webはdbサービスに依存している(接続先のホスト(IPアドレス)をdbと記述して接続できる)
    depends_on:
      - db

初期設定

docker-compose run web rails new . --force --database=mysql

rails new をしてDBはMySQLを使用するコマンドを実行して、Railsのひな型が作成されます。(時間かかります。)

実行後

Gemfileの内容が更新されたり、Dockerfileが内容が更新されたときは、イメージのビルドをし直す。

docker-compose build

うまくいかない場合は、sudoを先頭にして実行してください。

sudo docker-compose build

次にsrcディレクトリのconfigディレクトリの中のdatabase.ymlのpasswordに値を入力します。

入力する値は、docker-compose.ymlのenvironmentに設定した値のpasswordです。

次にhost(接続先)をlocalhostからdbに変更します。

データベースの作成

webのサービスの方に対して「rails db:create」のコマンドを実行してデータベースの作成をします。

docker-compose run web rails db:create

Docker起動してRailsのWellcomeページを確認する。

コンテナを作成して、起動させる。

docker-compose up

localhost:3000にアクセスする。

コンテナ削除と停止

下記のコマンドを実行してコンテナ停止して削除をします。

docker-compose down

その他のDockerコマンド

 -dのオプションを付けるとバックグラウンドで起動できる。

docker-compose up -d

ログの確認コマンド

docker-compose logs

コンテナ内でコマンドを実行したいとき

#docker-compose exec <サービス> <コマンド>
docker-compose exec web /bin/bash

GemfileやDockerfileを修正した時に反映するとき

docker-compose build

コマンドを実行してイメージの作り直しを行う

docker-compose up -d

コマンドを実行して、コンテナを作成し起動しなおす。

参考サイト

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
目次
閉じる