假设我们有一个带有一些 CMD 的 Dockerfile,并且我们从中生成和映像。现在假设我们编写了一个 docker-compose 并且其中一个服务是从该图像构建的。
我想要做的是运行相同的命令,但连接我自己的新参数。
例如,假设原始 CMD 是
java -jar app.jar --argumentA=valA
我希望命令是
java -jar app.jar --argumentA=valA --argumentB=valB
是否可以?
假设我们有一个带有一些 CMD 的 Dockerfile,并且我们从中生成和映像。现在假设我们编写了一个 docker-compose 并且其中一个服务是从该图像构建的。
我想要做的是运行相同的命令,但连接我自己的新参数。
例如,假设原始 CMD 是
java -jar app.jar --argumentA=valA
我希望命令是
java -jar app.jar --argumentA=valA --argumentB=valB
是否可以?
我不完全确定这是否是你想要完成的,但是......
Dockerfile 公开了ENTRYPOINT
和CMD
以便能够执行命令。这些也可以结合使用,但在这种情况下,这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
到.ENTRYPOINT
ENTRYPOINT