最初在
Dockerfile
我使用
CMD python /app/src/main.py
在我的 docker 容器中启动一个进程。它按预期工作。
我现在正在将这些 docker 镜像部署到 aws ecs。
我想将这个
CMD
从 Dockerfile 中移出,并将其作为任务定义的一部分,因为我认为它将为我提供更大的灵活性。
但是,当 docker 容器启动时,它会发出以下异常:
container_linux.go:247: starting container process caused "exec: \"python
/app/src/main.py\": stat python /app/src/main.py: no such file or directory"
显然 ecs 将 CMD 参数视为引用单个文件。
我尝试将命令定义为列表,即
["python", " /app/src/main.py"]
但它只是引发了一个不同的错误:container_linux.go:247: starting container process caused "exec: \"[\\\"python\\\"\": executable file not found in $PATH"
我需要将命令作为逗号分隔的字符串,即
python,/app/src/main.py
我们使用 Terraform,其中任务定义以 JSON 格式定义。其中,命令是一个 JSON 数组,包含命令的每个部分作为一个元素:
{
...,
"command" : ["python3", "/app/src/main.py"],
}