首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具有不同lauch类型和容量安装的AWS ECS中使用docker-compose.yml和ECS-pars.yml文件运行多个任务定义

问在具有不同lauch类型和容量安装的AWS ECS中使用docker-compose.yml和ECS-pars.yml文件运行多个任务定义
EN

Stack Overflow用户
提问于 2019-11-27 15:19:38
回答 1查看 1K关注 0票数 1

我有4个码头图像,我想运行在ECS上。对于我的本地系统,我使用停靠-撰写文件,其中我有多个服务。

我想在ECS上做类似的码头设计。

我希望我的数据库映像能够在EC2上运行,在fargate上运行rest,并在EC2上托管数据库的容量,并确保每个容器都可以使用它们的名称相互通信。如何配置我的docker-compose.yml和ecs-par.yml文件??

我的样本码头-复合文件

代码语言:javascript
复制
version: '2.1'
services:
  first:
    image: first:latest
    ports:
      - "2222:2222"
    depends_on:
       database:
        condition: service_healthy

  second:
    image: second:latest
    ports:
      - "8090:8090"
    depends_on:
       database:
        condition: service_healthy

  third:
    image: third:latest
    ports:
      - "3333:3333"

  database:
    image: database
    environment:
      MYSQL_ROOT_PASSWORD: abcde
      MYSQL_PASSWORD: abcde
      MYSQL_USER: user
    ports:
      - "3306:3306"
    volumes:
      - ./datadir/mysql:/var/lib/mysql
    healthcheck:
            test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
            timeout: 5s
            retries: 5
EN

回答 1

Stack Overflow用户

发布于 2019-11-27 19:32:36

  1. 我看不出你们是怎么把集装箱连接起来的。 depends_on只是告诉Docker在容器启动时使用的顺序。 您可能在容器中有实际的硬编码连接,这是不好的。
  2. 假设Docker文件,共享容器可以使用它们从Compose文件中的别名到达对方。 例如,third容器可以使用database域名到达database容器。 因此,如果您的容器中有这样的名称硬编码,它将工作。然而,人们通常将连接点(URL)配置为Docker组合文件中的环境变量。在这种情况下,没有硬编码。
  3. 在EC2上托管DB卷可能是个坏主意。 EC2有两种类型的存储映射- EBS和实例(基于S3)。当EC2实例终止时,实例存储将被销毁。EBS总是保存在EBS上的数据。 因此,您要么使用不适合您的EBS存储(而不是EC2),要么使用不适合您在这里的需要的S3。
  4. 在容器中托管DB是一个非常糟糕的主意。 您可以在Docker中对许多DB映像的描述中找到相同的信息。 相反,您可以使用使用AWS作为服务的MySql。
  5. 您现在遇到的问题与AWS和ECS没有什么共同之处。 当您让Docker在本地运行良好时,您将在ECS端获得相同的结果。

您可以通过撰写文件这里看到配置示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59073353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档