Dockerfile ARG入門

dockerfileのARG命令について

DockerfileのARG命令は、ビルド時に変数を設定し、その値をDockerイメージ内で使用するための命令です。

親記事

Docker入門 関連記事

Dockerfileの ARG命令 宣言方法

DockerfileのARG命令を実行するためには、次のように「変数名」と、「デフォルト値」を宣言する必要があります。 (ただし、デフォルト値は必ずしもDockerfile内で定める必要はありません。)

ARG <変数名>[=<デフォルト値>]

Dockerfile内でARG命令で定義した変数は、ビルドプロセス中で使用できます。 例えば、環境変数を設定したりコマンド内で変数を参照したりできます。

# Dockerfile内で変数を定義
ARG APP_PORT=8080
ARG APP_VERSION=1.0

# 環境変数を設定
ENV PORT=$APP_PORT
ENV VERSION=$APP_VERSION

Build時に ARGで宣言した環境変数の値を変更する

Dockerfile内で宣言したARGによる環境変数は、docker buildでDockerイメージをビルドする際に変更することができます。 変更の際には以下のように--build-argオプションを使用します。

docker build --build-arg <変数名>=<> -t <イメージ名> <Dockerfileのパス>

ここで、<変数名>はDockerfile内で定義された変数の名前で、<値>はその変数に設定する値です。

Dockerfile ARG命令の具体例

以下のDockerfileはnginxの公式イメージをベースにしており、NGINX_PORTというARG命令を使用してNginxのポート番号をカスタマイズします。

# Dockerfile内で変数を定義
ARG NGINX_PORT=80

# 公式のNginxイメージをベースにする
FROM nginx:latest

# Nginxのポート番号をEXPOSEで公開
EXPOSE $NGINX_PORT

# カスタムNginx設定ファイルをコピー
COPY nginx.conf /etc/nginx/nginx.conf

このDockerfileの中で、ARG命令を使用してNGINX_PORTという環境変数を定義し、デフォルト値として80を設定しています。 仮に公開するポート番号を80番から8080番へ変更したい時は、以下のように--build-argオプションを使用します。

docker build --build-arg NGINX_PORT=8080 -t custom-nginx-image .