確認した環境
- macOS 10.13.4
- Docker for mac
$ docker version
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:14:32 2018
OS/Arch: linux/amd64
Experimental: true
手順
適当な場所にディレクトリを用意(例えば ~/docker-rails)し、該当ディレクトリ配下で以下の手順を進める。
以下の内容で Dockerfile を用意
Dockerfile
# Dockerfile
FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
以下の内容でGemfileを用意(後述のrails new
で上書きされる)
Gemfile
# Gemfile
source 'https://rubygems.org'
gem 'rails', '5.1.6'
空のGemfile.lockファイルを用意
$ touch Gemfile.lock
以下の内容で docker-compose.ymlを用意
docker-compose.yml
# docker-compose.yml
---
version: '3'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
rails new
を実行する(--force
は既存のGemfileを書き換えるために必要)
$ docker-compose run web rails new . --force
すると、Gemfileが更新されRailsに必要な基本的なgemが登録される。
カレントディレクトリの内容が更新されているのでイメージビルドし直す。
$ docker-compose build
コンテナを起動する。
$ docker-compose up
ブラウザ等でhttp://localhost:3000/
を開いて以下のように表示されればOK
参考: https://docs.docker.com/compose/rails/#connect-the-database