Ruby on Rails 5.1 用のDockerのベースイメージを作った
Ruby on Rails 5.1からは、Rubyだけではなく、webpackerとか使う場合にはnpm環境も必要となる。
毎回自前でDockerfileでnpm環境をインストールするのも時間がかかるので、その辺をひとまとめにしたDockerイメージを作りました。
https://hub.docker.com/r/gendosu/ruby-for-rails-51/
使い方は
Rails5.1のプロジェクトに
Dockerfileを以下のように作成
# 本体 # # VERSION 0.0.1 FROM gendosu/ruby-for-rails-51:2.3 MAINTAINER Gen Takahashi "gendosu@gmail.com" ADD . /products WORKDIR /products RUN yarn RUN bundle RUN chmod a+x /products/entrypoint.sh RUN ./entrypoint.sh ENTRYPOINT ["./entrypoint.sh"]
docker-compose.yml
も以下のように作成
version: "2" volumes: postgres: services: # # メインコンテナ # main: build: . image: example depends_on: - postgres volumes: - .:/products - postgres:/var/run/postgresql ports: - "3000:3000" environment: RAILS_ENV: development command: rails s -b 0.0.0.0 -p 3000 js: build: . image: example volumes: - .:/products ports: - "8080:8080" environment: RAILS_ENV: development command: bin/webpack-dev-server --host 0.0.0.0 # # PostgreSQLのコンテナ # postgres: image: postgres:9.3.14 environment: - "POSTGRES_USER=postgres" volumes: - postgres:/var/run/postgresql - .:/products ports: - "5432:5432"
このDockerイメージを使用すれば、Ruby on Railsとyarn(npm)が即実行できる状態になります。
ビルド時に走るのはyarnとbundleだけなので、比較的短時間で環境の構築が可能となります。