0

假设我们有一个带有一些 CMD 的 Dockerfile,并且我们从中生成和映像。现在假设我们编写了一个 docker-compose 并且其中一个服务是从该图像构建的。

我想要做的是运行相同的命令,但连接我自己的新参数。

例如,假设原始 CMD 是

java -jar app.jar --argumentA=valA

我希望命令是

java -jar app.jar --argumentA=valA --argumentB=valB

是否可以?

4

1 回答 1

1

我不完全确定这是否是你想要完成的,但是......

Dockerfile 公开了ENTRYPOINTCMD以便能够执行命令。这些也可以结合使用,但在这种情况下,这ENTRYPOINT将是我们想要执行的命令,并且CMD将代表ENTRYPOINT( docs ) 的一些默认参数。

例如:

FROM openjdk:11

COPY . /target/app.jar

ENTRYPOINT ["java", "-jar", "app.jar", "--argumentA=valA"]

CMD ["--argumentB=valB"]

如果我们像这样运行图像,将--argumentB=valB被附加到java -jar app.jar --argumentA=valA

docker build -t app .
docker run app # # the command executed will be java -jar app.jar --argumentA=valA --argumentB=valB

但是CMD如果我们在运行 docker 镜像时提供其他参数,该部分将被覆盖:

docker build -t app .
docker run app --argumentA=valC # the command executed will be java -jar app.jar --argumentA=valA --argumentB=valC

此外,如果我们不需要将一些默认值附加CMD到.ENTRYPOINTENTRYPOINT

于 2021-10-10T13:13:43.427 回答