使用 Docker 时可能会存在的疑惑:
在 Dockerfile 使用 ARG 定义/设置(赋默认值)构建时期变量,其后的编译过程都可以引用该变量。
ARG
在 CLI 编译指令中使用 --buid-args 给变量赋值。
--buid-args
在 docker-compose 中使用 args 参数传递值给构建时期变量。
args
总结:
在 Dockerfile 使用 ENV 定义/设置(赋默认值)环境变量,其后的编译过程都可以引用该变量。
ENV
构建时期动态设置环境变量。 ARG 和 ENV 联合使用, 达到在<ins>编译时期</ins>动态设置容器运行时期环境变量的值的目的。例如:
ARG some_variable_name ENV env_var_name=$some_variable_name
在编译指令中使用 --buid-args 给变量赋值,ENV 保证了变量到容器中仍可被使用(不被覆盖的情况下)。
在 CLI 运行指令中使用 -e 给环境变量赋值。 当不指定变量值时,会透传宿主机的环境变量给容器,不建议这样使用。
-e
在单独的 env 文件中设置环境变量。 文件内容形如:
env_var_name=another_value
需要在 CLI 运行指令中使用 --env-file 选项指定从哪个文件中读取环境变量。
--env-file
在 docker-compose 中赋值环境变量。
environment
env_file
docker-compose.yml
.env
docker-compose config