Docker 入門
Tim Sangster
Software Engineer @ DataCamp
在 Dockerfile 中建立變數
ARG <var_name>=<var_value>
例如 ARG path=/home/repl
在 Dockerfile 中使用
$path
例如 COPY /local/path $path
設定 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
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
在 Dockerfile 中建立變數
ENV <var_name>=<var_value>
例如 ENV DB_USER=pipeline_user
在 Dockerfile 或執行時使用
$DB_USER
例如 CMD psql -U $DB_USER
設定執行時使用的目錄
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
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 ...
| 用途 | Dockerfile 指令 |
|---|---|
| 建立只在建置期間可用的變數 | ARG <name>=<value> |
| 建立變數 | ENV <name>=<value> |
| 用途 | Shell 指令 |
|---|---|
| 在 docker build 覆寫 ARG | docker build --build-arg <name>=<value> |
| 在 docker run 覆寫 ENV | docker run --env <name>=<value> <image-name> |
| 檢視建立映像所用的指令 | docker history <image-name> |
Docker 入門