构建参数不会将值传递给 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
我想构建一个 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