gpt4 book ai didi

docker - 将多个 classFile 作为参数传递给 Dockerfile

转载 作者:行者123 更新时间:2023-12-01 00:14:49 24 4
gpt4 key购买 nike

我有一个像这样的 Dockerfile:

FROM java:8
ARG cName
ADD target/jar1.jar p2p.jar
ADD ci/docker_entrypoint.sh .
CMD ["bash", "docker_entrypoint.sh" , "$cName"]

我有一个 docker_entrypoint.sh 看起来像:
java -cp p2p.jar $1

我有多个类要运行,我提供 className 作为 dockerfile 的输入参数。我正在运行几个命令来构建和运行 docker。
docker build -f Dockerfile -t docker-p2p --build-arg cName=com.HelloWorld .
docker run docker-p2p

运行第二个命令后,我收到以下错误:
Error: Could not find or load main class $cName

我是 docker 新手,无法通过 dockerfile 进行参数化,但是当我在 dockerfile 中提到 className "HelloWorld"时,它运行良好。但是当我尝试传递参数时,它会出现此错误。

最佳答案

您必须在 docker 之间有所不同运行 , cmd 入口点 .

对于您的示例,您可以使用入口点并通过环境变量设置参数。

一个简单易用的 Dockerfile 示例可能是:

FROM java:8
ENV NAME="John Dow"
ENTRYPOINT ["/bin/bash", "-c", "echo Hello, $NAME"]

docker build . -t testdocker run -e NAME="test123" test
还可以查看更多文档: docker-run-vs-cmd-vs-entrypoint .

关于docker - 将多个 classFile 作为参数传递给 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53884649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com