LoginSignup
22
22

More than 5 years have passed since last update.

新規RailsプロジェクトをDockerで始める手順

Last updated at Posted at 2016-07-14

新規RailsプロジェクトをDockerで始めようとすると結構大変なのでまとめておきます。ここでの説明はホストマシンをMac、DockerホストをLinux仮想マシン(docker-machine必須)として進めます。

まず、dinghyをインストールして起動しておきます。

docker-compose.ymlを作る

docker-compose.yml
web:
  build: .
  command: bundle exec rails s -b '0.0.0.0'
  volumes:
    - .:/app
  environment:
    VIRTUAL_HOST: rails.docker
  links:
    - db

db:
  image: mysql:5.7
  command: >
    bash -c '
    touch /var/log/mysql/general.log &&
    chown mysql:mysql /var/log/mysql/general.log &&
    tail -f /var/log/mysql/general.log &
    /entrypoint.sh mysqld
    --character-set-server=utf8mb4
    --collation-server=utf8mb4_general_ci
    --general-log=true
    --general-log-file=/var/log/mysql/general.log
    '
  # /dev/stdout is not writable by mysql user. See https://github.com/docker/docker/issues/6880
  ports:
    - "3310:3306" # sequelproを使う人向け
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: app

dbのcommandはわらわらと書いてますが、クエリーログをSTDOUTに出すためにしているので、クエリーログが不要ならcommand自体をはしょってもOKです。

Dockerfileを作る

Dockerfile
FROM reoring/rails

MySQLやPostgreSQLなどRails開発に必要そうなライブラリを同梱してONBUILDにも対応したイメージを@reoringが公開しているので活用します。ありがたや。

適当なGemfileとGemfile.lockを作ります

{
  echo "source 'https://rubygems.org'"
  echo "gem 'rails', '4.2.6'"
} > Gemfile
touch Gemfile.lock

ここまででディレクトリ構成はこうなっているはずです:

$ tree .
.
├── Dockerfile
├── Gemfile
├── Gemfile.lock
└── docker-compose.yml

Railsプロジェクトを生成する

# MySQLの場合
docker-compose run web rails new . --force --database=mysql --skip-bundle

# PosgreSQLの場合
docker-compose run web rails new . --force --database=postgresql --skip-bundle

Railsのプロジェクトが生成され、ファイル構成はこうなります:

$ tree . -L 1
.
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── README.rdoc
├── Rakefile
├── app
├── bin
├── config
├── config.ru
├── db
├── docker-compose.yml
├── lib
├── log
├── public
├── test
├── tmp
└── vendor

Railsコンテナをビルドしなおす

Gemfileが出来たので改めてビルドしなおします。

docker-compose build web

DB設定を書き換える

環境変数からDB設定を受け取れるように書き換えます。

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: <%= ENV['DB_ENV_MYSQL_ROOT_PASSWORD'] %>
  host: <%= ENV['DB_PORT_3306_TCP_ADDR'] %>

development:
  <<: *default
  database: <%= ENV['DB_ENV_MYSQL_DATABASE'] %>

環境を起動する

docker-compose up

ウェブサイトにアクセスする

http://rails.docker/ を開きRailsのデフォルト画面が表示されれば完了です。

あとは忘れないうちに、生成されたRails関連のファイルをgitにチェックインしておきましょう。

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