gpt4 book ai didi

bash - Docker build-arg在单独的行中定义时不会自动获取env变量

转载 作者:行者123 更新时间:2023-12-02 19:21:13 25 4
gpt4 key购买 nike

鉴于此Dockerfile:

ARG PY_VERSION

FROM python:${PY_VERSION}-buster

CMD python -V

docker build . --build-arg PY_VERSION=3.8和这个 PY_VERSION=3.8 docker build . --build-arg PY_VERSION起作用。

但是这个

PY_VERSION=3.8
echo $PY_VERSION
3.8

docker build . --build-arg PY_VERSION

Sending build context to Docker daemon 2.048kB
Step 1/3 : ARG PY_VERSION
Step 2/3 : FROM python:${PY_VERSION}-buster
invalid reference format

如果未在同一行中设置docker为什么不选择env变量?

版本: Docker version 19.03.5, build 633a0ea GNU bash, version 5.0.11(1)-release (x86_64-apple-darwin19.0.0)
编辑:
我知道我可以使用 docker build . --build-arg PY_VERSION=$PY_VERSION,只是想知道为什么我提供的示例不起作用

最佳答案

在提供的示例中,您仅声明了PY_VERSION,但尚未为其分配值。

根据documentation

You may also use the --build-arg flag without a value, in which case the value from the local environment will be propagated into the Docker container being built



内置的 env命令可用于显示可用的环境变量。

根据 man page

If no command name is specified following the environment specifications, the resulting environment is printed. This is like specifying a command name of 'printenv'.



最后,要设置环境变量,必须使用内置的 export命令。

根据 man page

The supplied names are marked for automatic export to the environment of subsequently executed commands.

关于bash - Docker build-arg在单独的行中定义时不会自动获取env变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59529927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com