gpt4 book ai didi

java - Docker CMD + ENTRYPOINT 与命令行行为不匹配

转载 作者:行者123 更新时间:2023-12-01 17:45:42 24 4
gpt4 key购买 nike

我正在尝试基于 distroless java 镜像构建 vertx docker 环境。当我运行 docker 容器时,它找不到我尝试执行的类。

但是,当我在容器中运行该命令时,它工作得很好。

这是我的 Dockerfile

FROM gcr.io/distroless/java:debug
ADD vert.x-3.7.0.tar.gz /usr/

ENTRYPOINT ["java","-cp", "'/usr/vertx/lib/*'", "io.vertx.core.Launcher", "version"]
CMD ["-start"]

当我运行容器时,出现以下错误:

Error: Could not find or load main class io.vertx.core.Launcher

所以我使用以下命令运行图像:

docker run --entrypoint=sh -ti <image_name>

它提供了一个 busybox shell。然后我在命令行中输入以下内容:

java -cp '/usr/vertx/lib/*' io.vertx.core.Launcher version

它工作得很好,给了我以下输出

Apr 07, 2019 7:20:18 PM io.vertx.core.impl.launcher.commands.VersionCommand
INFO: 3.7.0

我期望 ENTRYPOINT + CMD 组合具有相同的行为。我似乎无法弄清楚为什么该组合不起作用。

最佳答案

您的 Dockerfile 中有错误。你有:

ENTRYPOINT ["java","-cp", "'/usr/vertx/lib/*'", "io.vertx.core.Launcher", "version"]

第三个参数中引号过多。你有:

"'/usr/vertx/lib/*'"

你想要:

"/usr/vertx/lib/*"

在当前的Dockerfile中,-cp选项的参数是文字值'/usr/vertx/lib/*' ,包括单引号。这当然不匹配任何文件系统路径。

关于java - Docker CMD + ENTRYPOINT 与命令行行为不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55565941/

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