【发布时间】:2020-02-06 21:28:13
【问题描述】:
我是 ECS 新手,我对如何使用具有多种服务的 docker-compose 文件在 AWS ECS Fargate 中自动部署感到有些困惑。
我能够通过以下步骤执行从 git push 到部署单个容器的端到端:
- 创建 AWS ECR
- 标记泊坞窗图像
- 创建 CodeCommit
- 创建 CodeBuild
- 创建 CodeDeploy
- 使用任务描述创建集群
- 创建管道以加入之前的所有内容并自动化直到结束。
- 完成
但是当您拥有多项服务时会发生什么?
- 是否必须修改
docker-compose文件才能与ECS 兼容?如果是这样,如果整个项目都在一个文件夹中(pydanny cookiecutter 结构),我该如何分离存储库? - 我是否必须为我的
docker-compose的每个服务创建一个 ECR 存储库? - 自动化每个 ECR 的标签和推送以及各自的部署以实现完整的端到端流程的步骤是什么?
- 如何修改
docker-compose的卷以在 ECS 上工作?
我使用pydanny cookiecutter 生成的以下 docker-compose 文件,它有 7 个服务:
Django + Postgres + Redis + Celery + Celeryworker + Celerybeat + Flower
docker-compose.yml
version: '3'
volumes:
local_postgres_data: {}
local_postgres_data_backups: {}
services:
django: &django
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: test_cd_django
depends_on:
- postgres
volumes:
- .:/app
env_file:
- ./.envs/.local/.django
- ./.envs/.local/.postgres
ports:
- "8000:8000"
command: /start
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
image: test_cd_postgres
volumes:
- local_postgres_data:/var/lib/postgresql/data
- local_postgres_data_backups:/backups
env_file:
- ./.envs/.local/.postgres
redis:
image: redis:3.2
celeryworker:
<<: *django
image: test_cd_celeryworker
depends_on:
- redis
- postgres
ports: []
command: /start-celeryworker
celerybeat:
<<: *django
image: test_cd_celerybeat
depends_on:
- redis
- postgres
ports: []
command: /start-celerybeat
flower:
<<: *django
image: test_cd_flower
ports:
- "5555:5555"
command: /start-flower
非常感谢您的帮助。
【问题讨论】:
标签: amazon-web-services docker docker-compose amazon-ecs