docker - 如何仅针对服务进行 docker-compose up?

标签 docker docker-compose

在我的 docker-compose.yml文件我有很多服务:

  • nginx
  • mysql
  • Redis
  • 回声
  • php
  • ...

  • 还有一些我与 docker-compose run --rm 一起使用的 CLI 实用程序:
  • 工匠
  • Composer
  • npm
  • ...

  • 当我启动我的系统时,我会做 docker-compose up .不幸的是,这也尝试启动所有 CLI 实用程序。有没有办法在我的 docker-compose 中将这两个类别分开?

    最佳答案

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

    services:
      nginx:
        # ...
      mysql:
        # ...
      composer:
        profiles: ["cli-only"]
        # ...
        # ...
      npm:
        profiles: ["cli-only"]
        # ...
    
    docker-compose up # start main services, no composer and no npm
    docker-compose run --rm composer
    docker-compose run --rm npm
    

    原答案
    不幸的是,目前没有方便的方法来做到这一点。官方推荐的方法是将您的命令分成自己的 docker-compose.yml :
    # start all your services
    docker-compose up
    
    # execute a defined command in docker-compose.cli.yml
    docker-compose -f docker-compose.cli.yml run npm update
    
    # if your command depends_on a service you need to merge the configs
    docker-compose -f docker-compose.yml -f docker-compose.cli.yml run npm update
    
    指定多个 docker-compose.yml带有 -f 的文件flag 会将它们合并在一起,参见 documentation .这允许您依赖在另一个文件中定义的服务/网络/卷。
    有关整个问题的深入讨论,请参阅 docker/compose#1896 .

    关于docker - 如何仅针对服务进行 docker-compose up?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63051200/

    相关文章:

    docker - Pip 编译为 dockerfile 的一部分 - 向requirements.txt 添加新条目的最快方法?

    docker - 谁能让我知道我的docker文件中的问题是什么?

    django - Docker-compose 教程不起作用 "python: can' t 打开文件 'manage.py"

    docker - Reflex Golang与docker,docker-compose和makefile

    postgresql - 来自另一个容器内部的 Docker 端口不匹配

    mysql - 无法使用链接的 mysql 数据库在 docker 中启动应用程序

    Docker挂载顺序乱序,不让我挂载我的目录

    azure - "ACI integration does not support labels in compose applications"但我没有指定任何服务标签

    docker - 运行Docker容器的Docker内部的 Airflow

    docker - 此处不允许yml docker-compose错误映射值