您好我正在运行kubernetes集群,我运行mailhog容器。
但我需要使用自己的docker run参数运行它。如果我直接在docker中运行它。我会用命令:
docker run mailhog/mailhog -auth-file=./auth.file
但我需要通过Kubernetes pod运行它。我的pod看起来像:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mailhog
spec:
replicas: 1
revisionHistoryLimit: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: mailhog
spec:
containers:
- name: mailhog
image: us.gcr.io/com/mailhog:1.0.0
ports:
- containerPort: 8025
如何通过kubernetes实现带参数-auth-file =。/ auth.file的Docker容器。感谢。
我尝试在containers
下添加
command: ["-auth-file", "/data/mailhog/auth.file"]
然后我得到了
Failed to start container with docker id 7565654 with error: Error response from daemon: Container command '-auth-file' not found or does not exist.
答案 0 :(得分:7)
感谢@ lang2
这是我的deployment.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mailhog
spec:
replicas: 1
revisionHistoryLimit: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: mailhog
spec:
volumes:
- name: secrets-volume
secret:
secretName: mailhog-login
containers:
- name: mailhog
image: us.gcr.io/com/mailhog:1.0.0
resources:
limits:
cpu: 70m
memory: 30Mi
requests:
cpu: 50m
memory: 20Mi
volumeMounts:
- name: secrets-volume
mountPath: /data/mailhog
readOnly: true
ports:
- containerPort: 8025
- containerPort: 1025
args:
- "-auth-file=/data/mailhog/auth.file"
答案 1 :(得分:6)
你走在正确的轨道上。只是你还需要在command
数组中包含二进制文件的名称作为第一个元素。您可以通过查看相应的Dockerfile
(CMD
和/或ENTRYPOINT
)来找到它。
在这种情况下:
command: ["Mailhog", "-auth-file", "/data/mailhog/auth.file"]
答案 2 :(得分:3)
在kubernetes中,command
相当于ENTRYPOINT
。在您的情况下,应使用args
。
https://kubernetes.io/docs/api-reference/v1.6/#container-v1-core
答案 3 :(得分:0)
我需要类似的任务(我的目标是将应用程序配置文件传递给应用程序),我的工作如下:
在kubernetes yml文件的Deployment部分中设置环境变量。
env:
- name: PROFILE
value: "dev"
在dockerfile中将此环境变量用作命令行参数。
CMD java -jar -Dspring.profiles.active=${PROFILE} /opt/app/xyz-service-*.jar