【问题标题】:Docker ARG or ENV not working as expected in DockerfileDocker ARG 或 ENV 在 Dockerfile 中未按预期工作
【发布时间】:2019-03-18 08:17:54
【问题描述】:

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

更新

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

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    如果您实际使用下面的命令,那么它预计不会工作,因为名为 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}
    

    【讨论】:

    • 感谢您的回答,抱歉我想写 VERSION_APP 的错字,我可以确认它仍然不起作用。似乎该变量未解析,并且在路径中我看到 COPY installation.txt /home/Desktop/software/Applications/%VERSION_APP% 而不是我分配的值。
    • Dockerfile 中的 $env:VERSION_APP 怎么样
    • [警告] 一个或多个构建参数 [VERSION_APP] 未使用
    • %VERSION_APP% 你得到同样的信息?
    • 我没有收到消息,但它没有将文件复制到我想要的路径,因为它认为路径 /home/Desktop/software/Applications/%VERSION_APP% 而它应该是 /主页/桌面/软件/应用程序/5.1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多