在 Dockerfile 中使用变量

泰迪熊

我正在尝试在 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章