アルパカログ

📅  2021-06-28

Docker マルチステージビルドでRubyとNodeのハイブリッドイメージを作る


Dockerのマルチステージビルドを使えば、例えばRubyとNodeの両方の実行環境を持ったDockerイメージを簡単に作ることができます。

このエントリでは、Ruby on RailsをDockerコンテナで動かすことを想定してマルチステージビルドの使い方を説明します。

マルチステージビルドの概要

マルチステージビルドとは、結果から言ってしまえばDockerfileに複数のFROM命令を書くことです。

実際の例を見てみましょう。

下記はNodeイメージを使って node_modules 以下にパッケージをインストールした後、Rubyイメージを使ったビルドで node_modules をコピーしています。

マルチステージビルドでは、FROM命令に AS 構文を使ってステージに名前をつけることができます。名前を付けず、0から始まり順次割り振られる整数値を使うこともできます。

COPY --from 命令ではステージ名を使って外部イメージからコピーすることができます。

Nodeバイナリを持ったRubyイメージの例

最後に、Nodeバイナリを持ったRubyイメージを作成するDockerfileの例を載せておきます。

依存する RubyGems によって必要なライブラリが異なってくるので、ご自身の環境に適宜読み替えてください。

また、必要なライブラリはそれぞれの RubyGems のホームページを参照してください。

例えば Nokogiri ですと下記に記載されています。

Dockerfile のベストプラクティスは下記にありますので、ぜひこちらもご覧ください。

以上です。

このエントリではRuby on RailsをDockerコンテナで動かすことを想定してマルチステージビルドの使い方を説明しました。

同じカテゴリーの記事


おすすめ記事


最新記事


カテゴリー