You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不影响其他运行服务的情况下缩放Docker Compose服务?

Docker Compose 缩放服务时不停止现有运行服务的解决方法

问题原因

你的docker-compose.yml中app、db、adminer的deploy.replicas都设为0,当执行docker compose up -d --scale adminer=1时,Compose会强制同步所有服务到配置文件定义的状态——将app和db的副本数改回0,导致它们被停止。


解决方法

方法一:使用docker compose update单独缩放目标服务

该命令仅修改指定服务的副本数,不会干扰其他已运行的服务:

# 启动adminer
docker compose update --scale adminer=1

# 停止adminer(缩为0副本)
docker compose update --scale adminer=0

方法二:用Profiles管理手动启动服务

修改docker-compose.yml,移除deploy.replicas: 0配置,改用profiles标记需要手动启动的服务,默认情况下这些服务不会被Compose自动处理:

services:
  other:
    # ... 保留原有配置

  app:
    # ... 保留原有配置(删除deploy.replicas:0)
    depends_on:
     - db
    profiles: ["manual-services"]

  db:
    # ... 保留原有配置(删除deploy.replicas:0)
    profiles: ["manual-services"]

  adminer:
    # ... 保留原有配置(删除deploy.replicas:0)
    profiles: ["manual-services"]

之后操作服务的命令:

# 启动app和db
docker compose up -d app db

# 启动adminer(不会影响已运行的app和db)
docker compose up -d adminer

# 一次性启动所有手动标记的服务
docker compose --profile manual-services up -d

内容的提问来源于stack exchange,提问作者lonix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:32:53