Docker + Rails5.2.0.beta2
概要
参考
- Quickstart: Compose and Rails
- docker-compose で Rails 環境を構築する
- Make bundler fast again in Docker Compose
- docker-composeでRailsのGemを更新する時、docker buildするのを回避したい
- 超初心者がDocker for MacでRuby + Rails + Mysqlの開発環境を構築
- DockerでRailsのプロジェクトを立ち上げるまで
- Docker公式イメージのMySQLで文字コードを指定する
構築環境
step
$ mkdir {APP_DIR} && cd $_
Dockerfile
$ vim Dockerfile
FROM ruby:2.4.2 ENV TZ=Asia/Tokyo ENV LANG C.UTF-8 # NOTE: Yarn requires Node.js 4.0 or higher to be installed. RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && apt-get install -y nodejs RUN apt-get update -qq && apt-get install -y build-essential libmysqlclient-dev vim ARG APP_DIR="/myapp" RUN mkdir $APP_DIR WORKDIR $APP_DIR ADD Gemfile ${APP_DIR}/Gemfile ADD Gemfile.lock ${APP_DIR}/Gemfile.lock ENV BUNDLE_GEMFILE=${APP_DIR}/Gemfile \ BUNDLE_JOBS=2 \ BUNDLE_PATH=/bundle RUN gem install bundler & bundle install ADD . $APP_DIR
Gemfile
$ touch Gemfile.lock
$ vim Gemfile
ruby '2.4.2' source 'https://rubygems.org' gem 'rails', '~> 5.2.0.beta2'
docker-compose
$ vim docker-compose.yml
docker-compose.yml
version: '3' services: db: image: mysql:5.7 command: "mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" environment: MYSQL_ROOT_PASSWORD: password volumes: - mysql-db:/var/lib/mysql ports: - "3306:3306" web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' environment: EDITOR: vim volumes: - .:/myapp - bundle:/bundle ports: - "3000:3000" depends_on: - db volumes: mysql-db: driver: local bundle: driver: local
rails new
bin/rails active_storage:install
をskipする場合には--skip-bundle
をしてから別途bundle install
$ docker-compose run web rails new . --force -d mysql --skip-bundle $ docker-compose run --rm web bundle install
確認
$ ls -U -1 Dockerfile Gemfile Gemfile.lock README.md Rakefile app/ bin/ config/ config.ru db/ docker-compose.yml lib/ log/ package.json public/ storage/ test/ tmp/ vendor/ $ docker volume ls DRIVER VOLUME NAME local myapp_bundle local myapp_mysql-db
database.yml
host
をdocker-compose
で定義したMySQLのservcieに設定password
を設定
$ vim config/database.yml
default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: <%= ENV['DB_PASSWORD'] || 'password' %> host: db development: <<: *default database: myapp_development test: <<: *default database: myapp_test
実行
$ docker-compose up
初回は --build
オプションもあり
$ docker-compose up --build
確認
ブラウザ
コンテナ
- Containerが
myapp_web_1
の場合
$ docker exec -it myapp_web_1 /bin/bash
DB
$ docker-compose run --rm web rake db:create
-ActiveRecord::PendingMigrationError
が発生する場合は、db:migrate
で回避。(active_storage_blobs
, active_storage_attachments
を作成)
$ docker-compose run --rm -e RAILS_ENV=development web bin/rails db:migrate
確認
$ docker-compose up
$ mysql -h 127.0.0.1 -D myapp_development -uroot -p
git clone 後
$ docker-compose up --build $ docker-compose run --rm web rake db:create
関連本
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: Kindle版
- この商品を含むブログを見る
Ruby on Rails 5アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/14
- メディア: 大型本
- この商品を含むブログを見る
プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: WINGSプロジェクト阿佐志保
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/19
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
- 作者: Adrian Mouat,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/08/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る