默认情况下Docker compose排除服务

默认情况下Docker compose排除服务,docker,docker-compose,Docker,Docker Compose,如果在docker compose项目中定义了大量服务,如何从默认的docker compose up命令中排除服务 例如,我有一个nginx服务和一个ssl服务。它们发生冲突,因为它们都使用端口80,所以我如何才能使ssl服务不启动,除非我专门运行该服务,并且默认情况下,up命令将执行ssl服务以外的所有操作?不完全是您想要的,但您可以使用该标志将ssl服务缩放为零: docker-compose up --scale ssl_service=0 另一个选项是拥有多个compose文件,并使

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


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

不完全是您想要的,但您可以使用该标志将ssl服务缩放为零:

docker-compose up --scale ssl_service=0

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

嘿,我今天在github上遇到了这个问题: “定义默认情况下未启动的服务”

嗯,你不能。但我已经做了这个变通,因为我有很多服务和添加更多。我使用一些虚拟映像和自定义命令执行虚拟服务,然后将所需的服务设置为依赖项:

  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向上组合主服务

创建数据库结构
docker组装部署

包含数据的种子数据库
docker组合种子

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

从新开始就是为了这个!使用
配置文件
可以将服务标记为仅在特定配置文件中启动,例如:

服务:
网络应用程序:
# ...
nginx:
# ...
配置文件:[“nginx”]
端口:
- 80:80
ssl:
# ...
配置文件:[“ssl”]
端口:
- 80:80
docker compose up#只启动您的webapp服务
docker compose--配置nginx up#启动webapp和nginx服务
docker compose--启动ssl配置文件#启动webapp和ssl服务
docker compose运行ssl#运行ssl服务

但是,根据您的具体用例/设置,最好将您的服务分成几个部分。

有一些问题正在讨论,但被维护人员拒绝了。这确实是一个优雅而简单的解决方案