如何将参数连接到现有的 Dockerfile CMD?
How to concat arguments to an existing Dockerfile CMD?
假设我们有一个带有一些 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
但是如果我们在 运行 docker 图像时提供其他参数,CMD
部分将被覆盖:
docker build -t app .
docker run app --argumentA=valC # the command executed will be java -jar app.jar --argumentA=valA --argumentB=valC
此外,如果我们不需要将某些默认值附加到 ENTRYPOINT
。
,我们可以提交 CMD
并仅获得 ENTRYPOINT
假设我们有一个带有一些 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
但是如果我们在 运行 docker 图像时提供其他参数,CMD
部分将被覆盖:
docker build -t app .
docker run app --argumentA=valC # the command executed will be java -jar app.jar --argumentA=valA --argumentB=valC
此外,如果我们不需要将某些默认值附加到 ENTRYPOINT
。
CMD
并仅获得 ENTRYPOINT