我们正在尝试在 AWS ECS 上启动一个 Fargate 容器。在容器定义中,我们有
"command": [
"/bin/bash",
"-c",
"\"envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'\""
]
我也试过:
"command": [
"/bin/bash",
"-c",
"envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
]
使用docker run
,我们将成功使用:
docker run -p 8000:80 -e "VAR1=somevalue" -d nginx-sample:latest /bin/bash -c "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
在 kubernetes 世界中(也可以):
containers:
env:
- name: VAR1
value: "somevalue"
command: ["/bin/bash"]
args: ["-c", "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"]
到目前为止,我们无法让它在 AWS Fargate 中发挥作用。我不清楚我们应该如何以有效的方式传递参数。容器似乎在能够启动之前就退出了,但没有明显的日志消息,因此尚不完全清楚原因。我认为这是我在/bin/bash -c
传递命令参数的方式上的语法错误。