1
1

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.

【Rails】Dockerで環境構築

Posted at

Dockerを利用してrailsを起動させる方法を備忘録として

前提条件として

開発に使用するPCに Docker をインストール。
Docker公式

次に任意のファイルを作成。
ここではrails-dockerとしたが、何でもok

$ mkdir rails-docker
$ cd rails-docker

必要なファイルの作成

まずは rails-docker ディレクトリローカルの中に
以下の 5 つの空ファイルを作成する

・Dockerfile
・docker-compose.yml
・Gemfile
・Gemfile.lock
・entrypoint.sh

下記コマンドを打てば一回で作成可能

$ touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh}

Dockerfile を編集

※rubyのバージョンは要確認

Dockerfile
FROM ruby:2.7.5

# yarnパッケージ管理ツールをインストール
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
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 && apt-get install -y yarn

RUN apt-get update -qq && apt-get install -y nodejs yarn
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

RUN yarn install --check-files
RUN bundle exec rails webpacker:compile

# コンテナ起動時に実行させるスクリプトを追加
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

# Rails サーバ起動
CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml を編集

MySQL (DB) を動かすコンテナサービスを起動し、サービス間での連携が必要な場合には
Docker Compose というツールを利用
ymlに記述することでビルドやコンテナの起動を一括で行うことが可能。

・db欄でMySQL (DB) の起動に関する設定
・web欄でrailsの起動に関する設定

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"
    volumes:
      - ./tmp/db:/var/lib/mysql

  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

Gemfile の編集

Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 6.1.4'

entrypoint.sh の編集

entrypoint.sh
#!/bin/bash
set -e

rm -f /rails-docker/tmp/pids/server.pid

exec "$@"

プロジェクトのビルド

以下のコマンドをターミナルで実行
docker-compose runを行うことで設定ファイルで定義された通りに、新たなコンテナを作成できる。

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

次に下記を実行。サービスのビルドを実行

$ docker-compose build

config/database.ymlファイルの書き換え

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  host: localhost

development:
  <<: *default
  database: myapp_development
  host: db
  username: root
  password: password

test:
  <<: *default
  database: myapp_test
  host: db
  username: root
  password: password

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

ブラウザで立ち上げ

rails sでサーバー起動
ブラウザのアドレスバーに http://localhost:3000/ と入力して立ち上がれば成功

参考にした記事

docker公式
docker-composeでRails 6×MySQLの開発環境を構築する方法

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?