3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Docker】Railsの環境構築

Last updated at Posted at 2022-03-15

はじめに

 本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

DockerでRailsの開発環境を構築する方法

必要なファイルを作成

以下のコマンドを実行し、必要なファイルを用意します。

ターミナル
$ touch Dockerfile
ターミナル
$ touch docker-compose.yml
ターミナル
$ mkdir src
ターミナル
$ cd mkdir
ターミナル
$ touch Gemfile

作成したファイルの中身を記述

FROM ruby:3.1.1
# yarnとnode.jsをインストールするための記述
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
# ./srcを/appにコピー
COPY ./src /app
# ライブラリのインストール先を指定してbundle install
RUN bundle config --local set path 'vender/bundle' \
    && bundle install
docker-compose.yml
version: '3.9'
services:
  db:
    # M1Macを使用している場合には記述が必要。記述しないと docker: no matching manifest for linux/arm64/v8 in the manifest list entries. というエラーが発生。
    platform: linux/x86_64
    image: mysql:8.0.28
    # mysql8.0の認証形式に関する設定
    command: --default-authentication-plugin=mysql_native_password
    # コンテナを再度起動した際にデータを入れ直すことを防止
    volumes:
      - ./src/db/mysql_data:/var/lib/mysql
    # mysqlはパスワードを設定していないとエラーになるため以下は設定必須
    environment:
      MYSQL_ROOT_PASSWORD: password

  web:
    # イメージとしてカレントディレクトリ内のDockerfileを参照
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    # ./src以下を/app以下に同期
    volumes:
      - ./src:/app
    ports:
      - "3000:3000"
    # 依存関係。webはdbに依存しているの意。railsからmysqlに接続する際にDBのIPアドレスを直接記述するが、以下を記述することで当該箇所にdbと記述すればよくなる。
    depends_on:
      - db
source 'https://rubygems.org'

gem 'rails', '~> 7.0.0'

ターミナルでコマンドを実行する

ターミナル
$ docker-compose run web rails new . --force --database=mysql

再度イメージをbuildする

Gemfileに変更が加わっていますので、再度イメージをbuildします。

ターミナル
$ docker-compose build

database.ymlを修正

database.ymlを修正してデータベースの設定を行います。

以下のpasswordとhostをdocker-compose.ymlの記述を確認して修正します。

config/database.yml



default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password   # docker-compose.ymlで設定したpasswordを記述
  host: db   # docker-compose.ymlのdepends_onで設定した値を記述




データベースを作成する

ターミナル
$ docker-compose run web rails db:create

コンテナを作成し、起動する

ターミナル
 $ docker-compose up

ブラウザで確認する

http://localhost:3000/ にアクセスし、Railsの初期画面が表示されるか確認します。

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?