我正在尝试在 Dockerfile 中使用变量。我不明白为什么 $MyVariable 永远不会被值替换。
我使用以下方法构建我的图像:
docker build --build-arg PYTHON_VERSION=python-3.8.8.amd64 -t succeeds .
在我的 dockerfile 中,我有以下代码:
# escape=`
FROM mcr.microsoft.com/windows/servercore:1909
ARG PYTHON_VERSION=python-3.8.1.amd64
ENV PYTHON=C:\$PYTHON_VERSION
RUN echo $PYTHON_VERSION
RUN echo ${PYTHON_VERSION}
RUN echo PYTHON_VERSION
外壳分别打印:
$PYTHON_VERSION
${PYTHON_VERSION}
PYTHON_VERSION
文档建议:
在 FROM 之前声明的 ARG 在构建阶段之外,因此不能在 FROM 之后的任何指令中使用。要使用在第一个 FROM 之前声明的 ARG 的默认值,请使用在构建阶段内没有值的 ARG 指令:
ARG VERSION=latest FROM $VERSION ARG VERSION RUN echo $VERSION > image_version
但我显然没有得到相同的结果。我应该在 docker 命令中添加一些东西来使用变量吗?
您需要知道容器中没有ARG。虽然 ENV 在容器中可用。请从这里查看这个好的图表:
因此,在您的情况下,您需要使用 ENV 名称而不是 ARG 名称,如下所示:
# escape=`
FROM mcr.microsoft.com/windows/servercore:1909
ARG PYTHON_VERSION=python-3.8.1.amd64
ENV PYTHON=$PYTHON_VERSION
RUN echo $PYTHON
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句