LoginSignup
1
0

More than 5 years have passed since last update.

Docker for Macでrails + nginx + pumaで環境構築

Posted at

目的

railsのコードはそこそこかけるようになったので、railsの環境構築を実際にやってみる。

前提

rails: 5.0.0.1
nginx: 1.10.1
puma: 3.0

ほとんど自分用のメモなので説明は省きます。

ディレクトリ構成

myapp
  |--DockerFile
  |--docker-compose.yml
  |--container
       |--nginx

諸ファイルの作成

Dockerfile
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
docker-compose.yml
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コンテナが立ち上がっていない可能性が高いから上の方法を試す。

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