Ruby on Rails 5.1 用のDockerのベースイメージを作った

2017年6月9日

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だけなので、比較的短時間で環境の構築が可能となります。

Docker,仮想化

Posted by GENDOSU