Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在AWS ECS上使用docker compose进行Continuos部署的最佳实践_Amazon Web Services_Docker_Docker Compose_Amazon Ecs - Fatal编程技术网

Amazon web services 在AWS ECS上使用docker compose进行Continuos部署的最佳实践

Amazon web services 在AWS ECS上使用docker compose进行Continuos部署的最佳实践,amazon-web-services,docker,docker-compose,amazon-ecs,Amazon Web Services,Docker,Docker Compose,Amazon Ecs,我是ECS新手,对于如何使用带有多个服务的docker compose文件在AWS ECS Fargate中自动部署有些困惑 我能够通过以下步骤执行从git推送到部署单个容器的端到端操作: 创建AWS ECR 标记docker图像 创建编解码器 创建代码构建 创建代码部署 创建具有任务描述的集群 创建管道以连接之前的所有内容,并将其自动化到最后 完成 但是当您有多个服务时会发生什么? 我是否必须修改docker compose文件才能与ECS兼容?如果是这样,如果整个项目都在一个文件夹(pyda

我是ECS新手,对于如何使用带有多个服务的
docker compose
文件在AWS ECS Fargate中自动部署有些困惑

我能够通过以下步骤执行从git推送到部署单个容器的端到端操作:

  • 创建AWS ECR
  • 标记docker图像
  • 创建编解码器
  • 创建代码构建
  • 创建代码部署
  • 创建具有任务描述的集群
  • 创建管道以连接之前的所有内容,并将其自动化到最后
  • 完成
  • 但是当您有多个服务时会发生什么?

  • 我是否必须修改
    docker compose
    文件才能与ECS兼容?如果是这样,如果整个项目都在一个文件夹(pydanny cookiecutter结构)中,如何分离存储库
  • 我是否必须为docker compose的每个服务创建ECR存储库
  • 自动化每个ECR的标记和推送以及相应的部署以实现完整的端到端流程的步骤是什么
  • 如何修改docker compose的卷以在ECS上工作
  • 我使用由生成的以下docker compose文件,它有7个服务:

    Django
    +
    Postgres
    +
    Redis
    +
    Celery
    +
    Celeryworker
    +
    Celerybeat
    +
    Flower

    docker compose.yml

    版本:“3”
    卷数:
    本地日志数据:{}
    本地\u postgres\u数据\u备份:{}
    服务:
    django:&django
    建造:
    上下文:。
    dockerfile:./compose/local/django/dockerfile
    图片:test_cd_django
    取决于:
    -博士后
    卷数:
    -.:/app
    环境文件:
    -./.envs/.local/.django
    -./.envs/.local/.postgres
    端口:
    - "8000:8000"
    命令:/start
    博士后:
    建造:
    上下文:。
    dockerfile://撰写/制作/博士后/dockerfile
    图片:考试、cd、博士后
    卷数:
    -本地postgres\u数据:/var/lib/postgresql/data
    -本地\u postgres\u数据\u备份:/backups
    环境文件:
    -./.envs/.local/.postgres
    redis:
    图片:redis:3.2
    芹菜工人:
    
    这取决于是否要使用docker compose来执行所有操作。如果要使用docker compose构建、推送和拉取,则需要docker-compose.yml中的
    图像块与ECR地址匹配。
    e、 g

    我是否必须为docker compose的每个服务创建ECR存储库

    您不必为每个服务创建ECR存储库,而是为您构建的每个映像创建ECR存储库。在您的情况下,您不必为redis创建回购,但您必须为django和postgres创建回购,因为您正在使用Dockerfiles构建它们。celeryworker和celerybeat正在使用django映像启动,因此您无需为他们创建额外的回购

    自动化每个ECR的标记和推送以及相应的部署以实现完整的端到端流程的步骤是什么

    这里我只能提供一些建议,这完全取决于你的设置。我倾向于尽可能保持对云服务的不可知论。 您可以在
    docker compose.yml
    中定义图像,如下所示:

    services:
      postgres:
        image: ${ID}.dkr.ecr.${region}.amazonaws.com/my_postgres:${image_tag:-latest}
      django:
        image: <theID>.dkr.ecr.<theRegion>.amazonaws.com/my_django:${image_tag:-latest}
    
    如何修改docker compose的卷以在ECS上工作

    不幸的是,我无法回答这个问题,我找到了以下答案:

    非常感谢Stefano。你的评论很有帮助。我按照您告诉我的方式创建了一个独立的存储库。现在我正在努力提高我的服务水平。完成所有进度后,我将发布完整的解决方案。再次感谢你能管理好这个Wezen42吗?我也很好奇ECS上的docker compose
    services:
      postgres:
        image: ${ID}.dkr.ecr.${region}.amazonaws.com/my_postgres:${image_tag:-latest}
      django:
        image: <theID>.dkr.ecr.<theRegion>.amazonaws.com/my_django:${image_tag:-latest}
    
    image_tag=1.2.0