【问题标题】:Docker-compose exclude service by defaultDocker-compose 默认排除服务
【发布时间】:2018-06-14 02:32:35
【问题描述】:

如果我在 docker-compose 项目中定义了大量服务,我如何从默认的 docker-compose up 命令中排除服务?

例如,我有一个 nginx 服务和一个 ssl 服务。它们发生冲突是因为它们都使用端口 80,所以我怎样才能使 ssl 服务不启动,除非我专门运行该服务,并且默认情况下 up 命令将执行除 ssl 服务之外的所有操作?

【问题讨论】:

  • #1294#1896 讨论过这个问题,但被维护者拒绝了。

标签: docker docker-compose


【解决方案1】:

docker-compose 1.28.0 开始,新的service profiles 就是为此而生的!使用profiles,您可以将服务标记为仅在特定配置文件中启动,例如:

services:
  webapp:
    # ...

  nginx:
    # ...
    profiles: ["nginx"]
    ports:
      - 80:80

  ssl:
    # ...
    profiles: ["ssl"]
    ports:
      - 80:80
docker-compose up # start only your webapp services
docker-compose --profile nginx up # start the webapp and nginx service
docker-compose --profile ssl up # start the webapp and ssl service
docker-compose run ssl # run the ssl service

根据您的具体用例/设置,但最好将您的服务拆分为 multiple docker-compose.yml files

【讨论】:

    【解决方案2】:

    不完全是您要查找的内容,但您可以使用 scale 标志将您的 ssl 服务扩展到零:

    docker-compose up --scale ssl_service=0
    

    另一种选择是拥有多个撰写文件并使用 -f 标志运行 docker 以启动特定服务。

    【讨论】:

      【解决方案3】:

      嘿,我今天在 github 上提出了这个问题: “定义默认不启动的服务” https://github.com/docker/compose/issues/1896

      嗯,你不能。但是我已经完成了这个解决方法,因为我有很多服务并且添加了更多。我只用一些虚拟图像和自定义命令做了虚拟服务,然后我将所需的服务设置为依赖项:

        main-services:
          image: docker4w/nsenter-dockerd # you want to put there some small image
          command: sh -c "echo start"
          depends_on:
            - postgres
            - consumer-backend
            - prisma
            - api-gateway
            - adminer
            - frontend
      

      然后我写进了我的readme.md:

      使用它来运行一切
      docker-compose up -d main-services

      创建数据库结构
      docker-compose up deploy

      带有数据的种子数据库
      docker-compose up seed

      使用虚拟服务对事物进行分组比我迄今为止看到的任何其他方法都容易。

      【讨论】:

      • 这真是一个优雅而简单的解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      相关资源
      最近更新 更多