我使用Dockerfile
构建了node.js应用程序,用于定义:
CMD node dist/bin/index.js
我想"追加"在Dockerfile中定义的命令参数,即我想以node dist/bin/index.js foo
执行程序。
在docker土地上,我可以通过以下方式实现这一目标:
docker build --tag test .
docker run test foo
在kubernetes我无法使用command
,因为这会覆盖ENTRYPOINT
。我无法使用args
,因为这会覆盖cmd
中定义的Dockerfile
。看来我唯一的选择是:
cmd: ["node", "dist/bin/index.js", "foo"]
有没有办法在不重新定义整个Docker CMD
定义的情况下将参数附加到容器命令?
答案 0 :(得分:1)
无法追加。您可以在container.spec上设置command:
或args:
。您可以在此处详细了解如何覆盖CMD / ENTRYPOINT:https://kubernetes.io/docs/concepts/configuration/container-command-args/
答案 1 :(得分:1)
使用Dockerfile中的可选参数,您也许可以实现相同的效果:
ENV YOUR_OPTIONAL_PARAM
CMD node dist/bin/index.js $YOUR_OPTIONAL_PARAM
答案 2 :(得分:0)
我没有办法达到你想要的效果,除了你提到的设置cmd
之外。
答案 3 :(得分:0)
如果我误解了您的问题,请告诉我,但如果您只想将参数传递给POD,则可以在入口点脚本中运行命令,并使用传递给该命令的容器的环境变量。这应该适用于任何Pod规范(例如,作为部署描述的一部分)。
实施例
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
env:
- name: DEMO_GREETING
value: "Hello from the environment"
有关详情,请参阅此doc。