This page looks best with JavaScript enabled

『パーフェクトRuby on Rails』10章

 ·   ·  ☕ 2 分で読めます

10章

省略!!!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Node.jsダウンロード用ビルドイメージ
FROM ruby:2.6.6 AS nodejs

WORKDIR /tmp

RUN curl -LO https://nodejs.org/dist/v12.14.1/node-v12.14.1-linux-x64.tar.xz
RUN tar xvf node-v12.14.1-linux-x64.tar.xz
RUN mv node-v12.14.1-linux-x64 node

# Railsプロジェクトインストール
FROM ruby:2.6.6

# nodejsをインストールしたイメージからnode.jsをコピーする
COPY --from=nodejs /tmp/node /opt/node
ENV PATH /opt/node/bin:$PATH

# アプリケーション起動用のユーザーを追加
RUN useradd -m -u 1000 rails
RUN mkdir /app && chown rails /app
USER rails

# yarnのインストール
RUN curl -o- -L https://yarnpkg.com/install.sh | bash
ENV PATH /home/rails/.yarn/bin:/home/rails/.config/yarn/global/mode_modules/.bin:$PATH

# ruby2.7系以上のbundlerと2.6系のbundlerのメジャーバージョンが異なる
# 明示的にbundlerのバージョンを最新にする
RUN gem install bundler

WORKDIR /app

# Dockerのビルドステップキャッシュを利用するため、先にGemfileを転送し、bundle installする
COPY --chown=rails Gemfile Gemfile.lock package.json yarn.lock /app/

RUN bundle install
RUN yarn install

COPY --chown=rails . /app

RUN bin/rails assets;precompile

VOLUME /app/public

# 実行時にコマンド指定がない場合に実行されるコマンド
CMD ["bin/rails", "s", "-b", "0.0.0.0"]

Dockerはビルドのステップ毎にファイルシステムの変更差分を組み重ねることでイメージを作成する。らしい。
先にGemfileをイメージに組み込んでbundle installをすることで、ソースコードを変更した際にはbundle installされないようにしておく。

node_modulesについても同様にyarn installを先に実行する。

Share on

aiandrox
Written by
aiandrox
今日も楽しく明日も楽しく

目次