Jim*_*Lee 4 java linux build docker alpine-linux
我想构建一个docker镜像。我跑
docker build --build-arg project_file_name=account.jar -t account:1.0 .
Run Code Online (Sandbox Code Playgroud)
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}
Run Code Online (Sandbox Code Playgroud)
如果对变量进行硬编码,它将如下所示(#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
Run Code Online (Sandbox Code Playgroud)
在我用 #1 和 #2 构建图像之后
使用 #1,当我运行 docker 时,docker 告诉我它找不到指定的 jar 文件
使用#2,当我运行 docker 时,docker 能够正确执行 java jar 文件。
对我来说#1 和#2 都是一样的。只是 #1 使用 build-arg 变量方式,#2 是硬编码值。我相信我使用 build-args 的方式是不正确的。任何人都可以指导我吗?
问候
正在运行的容器将无法访问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}
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多