目的
railsのコードはそこそこかけるようになったので、railsの環境構築を実際にやってみる。
前提
rails: 5.0.0.1
nginx: 1.10.1
puma: 3.0
ほとんど自分用のメモなので説明は省きます。
ディレクトリ構成
myapp
|--DockerFile
|--docker-compose.yml
|--container
|--nginx
諸ファイルの作成
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
version: '2'
services:
mysql:
container_name: mysql
image: mysql:5.6.32
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: hogehoge
hostname: mysql
rails:
container_name: rails
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- mysql
nginx:
container_name: nginx
build: containers/nginx
ports:
- '80:80'
depends_on:
- rails
volumes:
- ./containers_data/nginx:/var/log/nginx
railsのコマンドを理解できていないのと、こちらを参考にしてnginxのコンテナを書いたのでいまいち理解できていない。mysqlの方も先ほどの参考サイトのように書きたい。(nginxではlogを持ってきてるが、mysqlでは何をしてるのかいまいち分からない)
./containersはさきほどのサイトをそのままコピー
build
ここまでできたらmyappディレクトリで以下のコマンドを実行
docker-compose build
docker-compose up
# 別タブで
docker-compose run rails rails db:create
これでhttp://127.0.0.1/にアクセスするとrailsのホーム画像が表示されるはず。
うまくいかないとき
##railsコンテナが起動していないとき
docker ps -a
で起動しているコンテナを確認して、railsがrails exited with code 1になっていたら、./tmp/pids/server.pidを削除
このファイルが残っていると起動していると見なされるみたい。
db:createでエラー
docker-compose run rails rails db:create
でUnknown MySQL server host 'localhost'とエラーが出たら、これもrailsコンテナが立ち上がっていない可能性が高いから上の方法を試す。