【Docker】初めてのDocker#3(docker-composeの使い方)

1. 概要

今回の記事では「docker-compose」の使い方を紹介していきます。

題材としてはRails環境構築に必要な設定ファイルを準備してコマンドを実行していきます。

また、今回の操作は「Visual Studio Code」から操作を行っていきます。

2. Dockerfile作成

まずは、「Dockerfile」から作成していきます。

FROM ruby:2.7
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
COPY ./src /app
RUN bundle config --local set path 'vendor/bundle' \
 && bundle install

↓ファイルの配置場所は以下の通りです。

3. Gemfile作成

続いて「Gemfile」を作成します。
後ほどdocker-composeでbuild後、このファイルの中身は書き換わります。

source 'https://rubygems.org'

gem 'rails', '~> 6.1.0'

↓ファイルの配置場所は以下の通りです。

4. docker-compose.yml作成

最後に「docker-compose.yml」を作成します。
yml→ヤムルと呼ぶようで、YAML形式というフォーマットのことです。

version: '3'
services:
  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./src/db/mysql_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - ./src:/app
    ports:
      - "3000:3000"
    depends_on:
      - db

↓ファイルの配置場所は以下の通りです。

5. 初期設定

いよいよ「docker-compose」コマンドを用いて、初期設定を行っていきます。

と、その前にdockerを立ち上げるのをよく忘れがちなのでdockerを立ち上げてから実行してください。

sudo service docker start

5-1. 最初に以下のコマンドを実行します。

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

このコマンド実行によりRailsのひな型が作成されます。
作成されるとGemfileが更新されます。

5-2. Gemfileが更新されたので、イメージのビルドをし直すをする必要があります。

sudo docker-compose build

5-3. データベースの接続情報を書き換えます。
「database.yml」
①password: password
②host: db(docker-compose.ymlのdepends_onで設定した名前と同じにする)

5-4. データベースの作成をします。

sudo docker-compose run web rails db:create

これで初期設定は完了となります。

6. 起動

sudo docker-compose up

起動後、「localhost:3000」にブラウザでアクセスすると、Railsが表示されます。

これで今回紹介するのdocker-composeの操作は以上となります。

関連記事

  1. Docker

    【Docker】DockerでMySQLを起動

  2. Docker

    WSL2上のUbuntuの中でDockerを動かすには?

  3. 【Docker】初めてのDocker#1(環境構築)

  4. 【Docker】初めてのDocker#2(Hello World~コン…

最近の記事

  1. AWS
  2. flutter

制作実績一覧

  1. Checkeys