Dockerfileの変数

Docker の紹介

Tim Sangster

Software Engineer @ DataCamp

ARG命令を使用した変数

Dockerfile で変数を作成する

ARG <var_name>=<var_value>

たとえば ARG path=/home/repl

Dockerfileで使用するために

$path

たとえば COPY /local/path $path

Docker の紹介

ARG命令のユースケース

Python バージョンの設定

FROM ubuntu
ARG python_version=3.9.7-1+bionic1
RUN apt-get install python3=$python_version
RUN apt-get install python3-dev=$python_version

フォルダの設定

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
Docker の紹介

ビルド時にARG変数を設定する

FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests

ビルドコマンドでの変数の設定

docker build --build-arg project_folder=/repl/pipeline .

ARGが上書きされ、ファイルの保存先は次のとおりです:

COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Docker の紹介

ENVを使用した変数

Dockerfile で変数を作成する

ENV <var_name>=<var_value>

たとえば ENV DB_USER=pipeline_user

Dockerfile または実行時に使用する場合

$DB_USER

たとえば CMD psql -U $DB_USER

Docker の紹介

ENV命令のユースケース

ランタイムで使用するディレクトリの設定

ENV DATA_DIR=/usr/local/var/postgres
ENV MODE production

実行時に変数を設定または置換すること

docker run --env <key>=<value> <image-name>

docker run --env POSTGRES_USER=test_db --env POSTGRES_PASSWORD=test_db postgres

1 https://hub.docker.com/_/postgres
Docker の紹介

変数内のシークレットは安全ではありません

docker history <image-name>

ARG DB_PASSWORD=example_password

docker history内に表示されます:

IMAGE          CREATED        CREATED BY                          SIZE      ...
cd338027297f   2 months ago   ARG DB_PASSWORD=example_password    0B        ...
Docker の紹介

概要

使用法 Dockerfile 命令
ビルド中のみアクセス可能な変数を作成する ARG <name>=<value>
変数を作成する ENV <name>=<value>

使用方法 シェルコマンド
docker build で ARG をオーバーライドする docker build --build-arg <name>=<value>
docker runでENVを上書きする docker run --env = <name>=<value> <image-name>
画像を作成するために使用された手順を参照 docker history <image-name>
Docker の紹介

練習しましょう!

Docker の紹介

Preparing Video For Download...