我有一个 java 控制台应用程序,我将其打包为 jar 并将其运行为
java -jar target/myProject-1.0-SNAPSHOT.jar -arg1 145 -arg2 345 -arg3 99
我想在容器内运行相同的命令并将这些参数(arg1、arg2、arg3)传递给 docker run 命令。我的 docker 文件如下所示:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/myProject-1.0-SNAPSHOT.jar myProject-1.0-SNAPSHOT.jar
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /myProject-1.0-SNAPSHOT.jar" ]
然后我尝试按如下方式运行图像:
docker run myProject:0.3 -e -arg1 145 -arg2 345 -arg3 99
但是我的程序没有得到参数。我缺少什么?
最佳答案
您必须在 DOCKERFILE
中添加 ENV 命令,以便可以接收传入的参数,然后将其传递到 ENTRYPOINT
脚本
Dockerfile 看起来像这样
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ENV arg1
ENV arg2
ENV arg3
ADD target/myProject-1.0-SNAPSHOT.jar myProject-1.0-SNAPSHOT.jar
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /myProject-1.0-SNAPSHOT.jar ${arg1} ${arg2} ${arg3}" ]
如果您有任何疑问,请告诉我
关于java - 接受 Commons CLI 风格参数的控制台应用程序的 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772769/