複数の引数を持つ Docker build コマンド
docker build
コマンドを使用すると、Dockerfile から Docker イメージを作成できます。また、PATH または URL で指定された場所にある一連のファイルを参照するコンテキストからイメージを構築することもできます。
一方、Dockerfile は、Docker イメージをアセンブルするときに呼び出される命令を含む読み取り専用のテキストドキュメントです。Docker イメージは、Docker コンテナーの構築に使用する命令セット、アプリケーションコード、依存関係、ツール、およびライブラリです。
このチュートリアルでは、docker build
コマンドと複数の引数の使用方法を示します。
複数の引数を持つ docker build
コマンド
docker build
コマンドは通常、ターミナルまたはコマンドラインで実行されます。
構文:
docker build [options] <directory path or URL>
PATH または URL は、事前にパッケージ化された tarball コンテキスト、プレーンテキストファイル、さらには git リポジトリなどのリソースを含む可能性のあるコンテキスト内のファイルのセットを参照します。すべてのファイルがローカルディレクトリ、つまり Dockerfile と同じディレクトリに格納されている場合、パスとして .
を使用することを選択することができます。
このパスは、Docker デーモンのビルドコンテキストに使用されるファイルを指定します。
docker build .
オプションパラメータの下で、ビルド時に複数の引数を渡すことができます。 –build-arg
タグを使用して、ユーザーがビルド時に設定できる値を設定できます。
ただし、--build-arg
タグを使用してイメージをビルドする前に、まず Dockerfile で ARG
命令を定義する必要があります。通常の環境変数のように、このビルド時間変数にアクセスできます。ただし、イメージをビルドした後は保持されません。
ARG 命令の範囲は制限されていますが、ベースイメージを指定する前に宣言できます。個別の --build-arg
タグを使用して各引数を個別に渡すことにより、複数のビルド引数を渡すこともできます。
構文:
docker build -t <image-name>:<tag> --build-arg <key1>=<value1> --build-arg <key2>=<value2> .
次の例では、いくつかの ARG
値を定義する単純な Dockerfile があります。この場合、デフォルト値は設定されていません。
Docker ファイルは次のようになります。
# base image
FROM python
ARG language
ARG name
# Set your working directory
WORKDIR /var/www/
# Copy the necessary files
COPY ./app.py /var/www/app.py
# Install the necessary packages
RUN pip install -r /var/www/requirements.txt
RUN echo "Hello $language Developer"
MAINTAINER Isaac Tonyloi
したがって、イメージをビルドするときに、-build-arg
タグを使用して値を渡すことが期待されます。
~/my-app$ docker build --build-arg language=Java .
上記のコマンドを使用してイメージを作成すると、以下に示すように、Hello Java Developer
というメッセージが他のファイルと一緒に出力されます。
0.0s
=> [5/6] RUN pip install -r /var/www/requirements.txt 100.4s
=> [6/6] RUN echo "Hello Java Developer" 4.4s
=> exporting to image 3.8s
=> => exporting layers 2.8s
=> => writing image sha256:22fa358b711d2ea3a1d72e59f062f6c7c38b414bdb253fb8d0def20222cadd93
複数の --build-arg
タグを使用する複数のコマンドで docker build
を使用することもできます。
/my-app$ docker build \
> --build-arg language=Java \
> --build-arg name=Tonyloi \
> .
これにより、メッセージが他のメッセージと一緒に下に印刷されます。これは非常に基本的なことですが、Dockerfile から Docker イメージを構築するときに複数のコマンドを渡す方法です。
出力:
=> [2/2] RUN echo "Hello Java Developer and my name is Tonyloi" 3.3s
=> exporting to image 3.0s
=> => exporting layers 2.0s
=> => writing image sha256:d4d7c3b18aa9422be2990f5381a5423a18867dda8090dd4a4f166efc4e7c4ba2
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn