首页 > 解决方案 > Docker ARG 或 ENV 在 Dockerfile 中未按预期工作

问题描述

我使用 Docker Toolbox for windows(用于兼容性问题)并在 Dockerfile 中指定一个ARG,以便在使用--build-arg命令构建映像时可以使用它。在 dockerfile 里面我也有一些COPY命令,我​​想在那里使用我的变量,但是当我运行 docker build 时--build-arg VERSION_APP=something。它不翻译变量。我已经用过$VERSION_APPor${VERSION_APP}%VERSION_APP%

FROM alpine
MAINTAINER Marinos

ARG VERSION_APP


RUN apk update && apk add dos2unix

COPY script.sh /home/script.sh
RUN chmod a+x /home/script.sh

RUN dos2unix /home/script.sh 

RUN sh /home/script.sh 

COPY installation.txt /home/Desktop/${VERSION_APP}

更新

看来您应该将整个路径传递给您使用的变量,这就是我让它工作的方式。

标签: dockerdockerfile

解决方案


如果您实际使用下面的命令,那么它预计不会工作,因为参数调用VERSION_APP

docker build --build-arg myVar=something

所以命令应该是

docker build --build-arg VERSION_APP=something

在 Dockerfile 中,%VERSION_APP%您可能还需要使用 ENV,如下所示:

ARG VERSION_APP
ENV VERSION_APP ${VERSION_APP}

推荐阅读