【发布时间】:2020-04-19 03:30:36
【问题描述】:
鉴于此 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为什么不选择它?
版本:Docker version 19.03.5, build 633a0eaGNU bash, version 5.0.11(1)-release (x86_64-apple-darwin19.0.0)
编辑:
我知道我可以使用docker build . --build-arg PY_VERSION=$PY_VERSION,只是想知道为什么我提供的示例不起作用
【问题讨论】:
-
@Inian 这不起作用,那不等于
docker build . --build-arg 3.8吗? -
在调用
docker之前尝试export PY_VERSION -
@Mafor 它适用于导出,这是为什么呢? docker build 是否在单独的 shell 中运行?
-
没有
export,shell只是设置了一个局部变量;它实际上不是环境变量,对 shell 启动的命令不可见。 -
@RonSerruya 请参阅stackoverflow.com/a/1158231/9090751
标签: bash docker environment-variables