Rails 5.2 + Docker, RAILS_MASTER_KEYをイメージ作成時に動的に入れる方法

hiko1129
3 min readJan 18, 1970

--

下記のような形でDockerfileを作成する。

FROM ruby:2.6.0-alpine3.8

ENV RAILS_ENV=production
ENV APP_ROOT /usr/src/app
ARG RAILS_MASTER_KEY
ENV RAILS_MASTER_KEY ${RAILS_MASTER_KEY}

WORKDIR $APP_ROOT

RUN apk add --no-cache alpine-sdk \
nodejs-current \
nodejs-npm \
yarn \
mysql-client \
mysql-dev \
python2 \
tzdata

COPY Gemfile $APP_ROOT
COPY Gemfile.lock $APP_ROOT

RUN bundle install --jobs=4

COPY . $APP_ROOT

RUN bin/yarn install
RUN bin/rails webpacker:compile

VOLUME $APP_ROOT/public
VOLUME $APP_ROOT/tmp下記の部分がポイントとなっている。
ARG RAILS_MASTER_KEY ENV RAILS_MASTER_KEY ${RAILS_MASTER_KEY}

下記のような形でCI上で環境変数をARGとして渡してやれば(CI側の環境変数にRAILS_MASTER_KEYが設定されている前提)、上記のARGにRAILS_MASTER_KEYが設定され、ENVのRAILS_MASTER_KEYにARGのRAILS_MASTER_KEYを設定することができる。これにより、イメージ作成時にRAILS_MASTER_KEYを設定した状態でビルドすることができる。

docker build --build-arg RAILS_MASTER_KEY=${RAILS_MASTER_KEY} -t app . -f Dockerfile.production

参考:

Rails5.2から追加された credentials.yml.enc のキホン — Qiita

Dockerfile ARG入門 — Qiita

« Ruby 2.6, MySQL, Webpacker, alpine 構成… Elastic Beanstalk 利用時に httpでのアク… »

Originally published at hiko1129.hatenablog.com on January 18, 1970.

--

--