LoginSignup
3

More than 3 years have passed since last update.

docker-composeでサクッと始めるRuby on Rails

Posted at

TL;DR

掲題の通りですが、docker + docker-composeを使ってローカルにRails環境をセットアップします

※ n番煎じかわかりませんが、自分用ということで…

準備

mac + Docker for Macです

  • macOS 10.14.5
  • docker 18.09.2
  • docker-compose 1.23.2

※ Docker for Macはこちらから

ディレクトリ構成

.
├── .env
├── docker
│   └── nginx
│       └── etc
│           └── nginx
│               └── conf.d
│                   └── default.conf
└── docker-compose.yml

docker-compose.yml

version: '3'
services:
  app:
    image: ruby:latest
    volumes:
      - .:/app:cached
    tty: true
    depends_on:
     - db
  nginx:
    image: nginx:alpine
    volumes:
      - .:/var/www:cached
      - ./docker/nginx/etc/nginx/conf.d:/etc/nginx/conf.d
    ports:
      - "8001:80"
    depends_on:
      - app
  db:
    image: mysql:5.7
    volumes:
      - mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}

volumes:
  mysql:
    driver: local

.env

MYSQL_DATABASE=testdb
MYSQL_USER=testuser
MYSQL_PASSWORD=testpass
MYSQL_ROOT_PASSWORD=testrootpass

docker/nginx/etc/nginx/conf.d/default.conf

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    server_name http;
    root /var/www/public;

    location / {
        proxy_pass http://app:3000;
    }
}

手順

ローカル

$ docker-compose up -d
$ docker-compose ps
$ docker-compose exec app bash

appコンテナ

以降はappコンテナ内でのオペレーション

# cd /app
# gem install rails
# rails new .

再びローカル

以下のようにGemfileを一部編集(マウントしてるのでローカルで編集する)

# gem 'mini_racer', platforms: :ruby

gem 'mini_racer', platforms: :ruby

再びappコンテナ

コンテナ内で続き

# cd /app
# bundle install
# rails s -b 0.0.0.0

動作確認

http://localhost:8001 にアクセスして「Yay! You’re on Rails!」確認できればOK

まとめ

-b 0.0.0.0 オプションの必要性に気づけず、地味に502で時間浪費しました…

GitHubにも上げたので、cloneしてもらえばすぐに手順のコマンドから試せそうです

.env.env.exampleから自分で作ってね)

自分用でRailsアプリケーション作りながらメンテしていくかもしれません

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
3