作者:广东狮子会_刘少杰 | 来源:互联网 | 2022-11-27 18:51
我可以使用-e选项传递环境变量。但是我不确定如何使用docker run命令将命令行参数传递给入口点的jar。
Docker文件
FROM openjdk
ADD . /dir
WORKDIR /dir
COPY ./test-1.0.1.jar /dir/test-1.0.1.jar
ENTRYPOINT java -jar /dir/test-1.0.1.jar
test.sh
#! /bin/bash -l
export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
$value=7
docker run -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY -i -t testjava $value
Siyu..
12
以exec形式使用ENTRYPOINT
ENTRYPOINT ['java', '-jar', '/dir/test-1.0.1.jar']
然后,当您运行时docker run -it testjava $value
,$value
将在您的入口点之后被“追加”java -jar /dir/test-1.0.1.jar $value
1> Siyu..:
以exec形式使用ENTRYPOINT
ENTRYPOINT ['java', '-jar', '/dir/test-1.0.1.jar']
然后,当您运行时docker run -it testjava $value
,$value
将在您的入口点之后被“追加”java -jar /dir/test-1.0.1.jar $value
...并将覆盖dockerfile中的CMD(如果存在)
2> grapes..:
你应该释放的组合的功率ENTRYPOINT
和CMD
。
将您的命令行的开始部分(不应更改)放到ENTRYPOINT
最后,将应该可配置的末尾放到中CMD
。然后,您可以简单地将必要的参数附加到docker run
命令中。像这样:
Docker文件
FROM openjdk
ADD . /dir
WORKDIR /dir
COPY ./test-1.0.1.jar /dir/test-1.0.1.jar
ENTRYPOINT ["java", "-jar"]
CMD ["/dir/test-1.0.1.jar"]
嘘
# this will run default jar - /dir/test-1.0.1.jar
docker run testjava
# this will run overriden jar
docker run testjava /dir/blahblah.jar
本文给出了很好的解释:https :
//medium.freecodecamp.org/docker-entrypoint-cmd-dockerfile-best-practices-abc591c30e21