这是我的compose.yml:
exp_db:
image: <img>
cpu_shares: 100
mem_limit: 362144000
volumes_from:
- exp_db_data
exp_db_data:
image: <img>
cpu_shares: 100
mem_limit: 362144000
exp_db应该启动postgres而exp_db_data是postgres数据的卷。
当我想用以下任务运行任务时:
ecs-cli compose --file compose.yml up
任务已停止(退出0)。当我检查它停止的原因时,它表示任务中的Essential容器已退出。我不确定卷容器是否应该退出。当我在本地使用docker-compose时,按预期方式工作。那么我做错了什么? 我对码头工作者来说相当新,所以我可能会遗漏一些东西或者误解一些基本原理。
由于
答案 0 :(得分:1)
我认为这是这里发生的事情:如果容器的基本参数在任务定义中标记为true,并且该容器由于任何原因而失败或停止,则作为该任务一部分的所有其他容器也将停止。如果将容器的基本参数标记为false,则其失败不会影响任务中其余的容器。如果省略此参数,则假定容器是必不可少的。 [1]
所有任务必须至少具有一个基本容器。
如果您的应用程序由多个容器组成,则应将用于通用目的的容器分组为组件,并将不同的组件分为多个任务定义。 [2]
[1] https://docs.aws.amazon.com/AmazonECS/latest/userguide/task_definition_parameters.html
[2] https://docs.aws.amazon.com/AmazonECS/latest/userguide/application_architecture.html
答案 1 :(得分:0)
在相同的任务定义中运行两个或多个服务时,会发生这种情况,您可以更改该行为,但是应该有一个容器可以保持服务的正常运行。
例如,假设您有两个容器,
您认为A不需要容器B,如果B断开,您不想重新启动A,则需要设置所有内容
"essential": false,
在B
容器任务定义中。
ECS agent 1.36.2
对我有用。