Learn or Die

生涯勉強。Macです。

コマンドの実行(RUN命令)

FROM命令で指定したベースイメージに対して、なんらかのコマンドを実行するときはRUN命令を使う。
アプリケーションをインストールする、環境構築のためのコマンドを実行するなど

RUN [実行したいコマンド]

RUN命令には、2通りの記述方法がある。

Shell形式

コマンドの指定をシェルの形式で記述する方法。

#aptコマンドでアップデート&Nginxのインストール
RUN apt-get update && apt-get install -y nginx

Exec形式

Exec形式で記述すると、シェルを介さず直接実行する。
実行したいコマンドはJSON配列で指定する。

#zsh(シェル)を利用して、アップデート&Nginxのインストール
RUN ["/bin/zsh","-c","apt-get update && apt-get install -y nginx"]

どちらを使うべきなのか

シェルを介してコマンドを実行したいときはShell形式、それ以外はExec形式で記述するとよい。