构建参数不会将值传递给 docker 文件

Build args does not pass in value to docker file

我想构建一个 docker 图像。而我运行

docker build --build-arg project_file_name=account.jar -t account:1.0 .

docker 文件如下所示 (#1)

FROM anapsix/alpine-java:8u172b11_server-jre

ARG project_file_name

MAINTAINER jim
COPY src/${project_file_name} /home/${project_file_name}
CMD java -jar /home/${project_file_name}

如果对变量进行硬编码,它将如下所示 (#2)

FROM anapsix/alpine-java:8u172b11_server-jre

MAINTAINER jim
enter code here
COPY src/account.jar /home/account.jar
CMD java -jar /home/account.jar

在我用#1 和#2 构建镜像后

使用#1,当我docker 运行,docker告诉我找不到指定的jar文件

使用#2,当我docker 运行时,docker能够正确执行java jar文件。

对我来说#1 和#2 是一样的。只是#1 使用 build-arg 变量方式而#2 是对值进行硬编码。我相信我使用 build-args 的方式不正确。有人可以指导我吗?

此致

A 运行 容器将无法访问 ARG 变量值。为此,您需要 ENV 变量。虽然您可以使用 ARG 变量来设置 ENV 变量。在你的情况下你可以做

FROM anapsix/alpine-java:8u172b11_server-jre
ARG project_file_name
ENV PROJECT_FILE=${project_file_name}

MAINTAINER jim
COPY src/${project_file_name} /home/${project_file_name}
CMD java -jar /home/${PROJECT_FILE}

你可以阅读更多here