docker compose创建多组服务

docker compose创建多组服务,docker,docker-compose,mattermost,Docker,Docker Compose,Mattermost,我试图在1台AWS EC2机器上创建3个服务 让我用更多的文字进一步解释: 当我运行docker compose up-d时,我得到一个结构如下的服务: 如何修改docker相关脚本,以便创建3组服务 我已经试过了docker-compose-up--scale-app=3--scale-web=3--scale-db=3。但是我找不到任何方法为每个App容器指定不同的端口 我找到的唯一解决方案是: 创建3份mattermost docker文件夹的副本 更改App端口和数据库连接信息 分别

我试图在1台AWS EC2机器上创建3个服务

让我用更多的文字进一步解释:

当我运行
docker compose up-d
时,我得到一个结构如下的服务:

如何修改docker相关脚本,以便创建3组服务

我已经试过了
docker-compose-up--scale-app=3--scale-web=3--scale-db=3
。但是我找不到任何方法为每个
App
容器指定不同的端口

我找到的唯一解决方案是:

  • 创建3份
    mattermost docker
    文件夹的副本

  • 更改
    App
    端口和数据库连接信息

  • 分别在
    mattermost-docker1
    mattermost-docker2
    mattermost-docker3
    中运行
    docker compose up-d
    3次

  • 但是这个解决方案会创建大量重复的文件。我不喜欢它


    有人知道如何创建3组mattermost服务吗

    您需要在docker compose中指定端口范围:

    例如,对于10容器缩放:

    version: '3'
    
    services:
      web:
        ...
        ports:
          - "80-90:443"
    
      app:
        ...
        ports:
          - "8000-8010"
    

    注意,您不需要更改容器内的端口(4434445)。您可以使用相同的,而且这是推荐的,因为尽管您在一个端口范围内使用不同的容器,但如果它们使用相同的nginx配置,则更容易使用。

    这将使用3个单独的数据库启动服务集(以nginx和mongo为例)

    本地测试:

    NAMES                STATUS                PORTS                                   IMAGE
    db2                  Up About a minute     27017/tcp, 0.0.0.0:32803->27018/tcp     mongo
    web1                 Up About a minute     80/tcp, 0.0.0.0:32802->8080/tcp         nginx:latest
    db1                  Up About a minute     0.0.0.0:32801->27017/tcp                mongo
    app1                 Up About a minute     80/tcp, 0.0.0.0:32800->8081/tcp         nginx:latest
    app3                 Up About a minute     80/tcp, 0.0.0.0:32798->8085/tcp         nginx:latest
    db3                  Up About a minute     27017/tcp, 0.0.0.0:32799->27019/tcp     mongo
    app2                 Up About a minute     80/tcp, 0.0.0.0:32797->8083/tcp         nginx:latest
    web3                 Up About a minute     80/tcp, 0.0.0.0:32796->8084/tcp         nginx:latest
    web2                 Up About a minute     80/tcp, 0.0.0.0:32795->8082/tcp         nginx:latest
    

    我认为您应该创建3个不同的文件,因为docker compose本身是一个二进制文件,它与docker引擎一起工作,以创建3个不同的mattermost服务集。此外,出于可维护性的考虑,这也更好。看看这是否有帮助?共享docker compose文件的内容。但是如何为3个数据库创建3个不同的名称?为什么需要?您可以创建相同的数据库名称。每个容器都是独立的。嗨,谢谢你的帮助。但mattermost似乎不支持通过配置
    docker compose.yml
    来更改
    app
    端口。也许我需要更深入地修改
    app
    文件夹下的文件。我会仔细看看
    NAMES                STATUS                PORTS                                   IMAGE
    db2                  Up About a minute     27017/tcp, 0.0.0.0:32803->27018/tcp     mongo
    web1                 Up About a minute     80/tcp, 0.0.0.0:32802->8080/tcp         nginx:latest
    db1                  Up About a minute     0.0.0.0:32801->27017/tcp                mongo
    app1                 Up About a minute     80/tcp, 0.0.0.0:32800->8081/tcp         nginx:latest
    app3                 Up About a minute     80/tcp, 0.0.0.0:32798->8085/tcp         nginx:latest
    db3                  Up About a minute     27017/tcp, 0.0.0.0:32799->27019/tcp     mongo
    app2                 Up About a minute     80/tcp, 0.0.0.0:32797->8083/tcp         nginx:latest
    web3                 Up About a minute     80/tcp, 0.0.0.0:32796->8084/tcp         nginx:latest
    web2                 Up About a minute     80/tcp, 0.0.0.0:32795->8082/tcp         nginx:latest