gpt4 book ai didi

bash - ECS/Fargate 容器定义命令参数

转载 作者:行者123 更新时间:2023-12-02 18:14:24 26 4
gpt4 key购买 nike

我们正在尝试在 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正在通过。

最佳答案

最后,正确的语法(至少一种对我们来说效果很好)是:

"command": [
"/bin/bash",
"-c",
"envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
],

我们真正的问题实际上是我们已经按照以下方式定义了容器健康检查:
"healthCheck": {
"retries": 5,
"command": [
"CMD-SHELL",
"curl --fail http://localhost/health || exit 1"
],
"timeout": 10,
"interval": 30,
"startPeriod": 30
},

我们忘记验证 curl实际上安装在容器内。我们理所当然地认为它会在那里,但在 nginx:latest 中图像,它不是 - 我认为对于较小的规模和较小的攻击面作为漏洞利用向量是正确的。我们最终只在我们的 Dockerfile 中安装了 curl ,在那之后一切都很好。

关于bash - ECS/Fargate 容器定义命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54852134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com