wuee.
容器编排 / 2026.07

六服务 Docker Compose 编排实战

Docker v29.6.1 · Compose 2.x · 单文件部署

本服务器六个容器全部由一张 docker-compose.yml 定义。从镜像选择、环境变量、端口映射到持久化卷,一份文件管理所有服务的生命周期。这是典型的"一个 compose 管一台服务器"的极简部署模式。

服务清单

maim-bot-core    sengokucola/maibot:latest     WebUI 8001
maim-bot-napcat  mlikiowa/napcat-docker:latest  OneBot 6099
astrbot          soulter/astrbot:latest         6185
caddy            caddy:2                        80 / 443
sqlite-web       coleifer/sqlite-web:latest     8120
gsuid_core       gsuid-core:runtime             8765

核心配置:一个 service 示例

以主服务 core 为例,典型配置包含镜像、环境变量、端口映射和 volumes 挂载:

services:
  core:
    container_name: maim-bot-core
    image: sengokucola/maibot:latest
    environment:
      - TZ=Asia/Shanghai
      - WEBUI_HOST=0.0.0.0
      - MAIBOT_LEGACY_0X_UPGRADE_CONFIRMED=1
    ports:
      - "18001:8001"
    volumes:
      - ./docker-config/mmc:/MaiMBot/config
      - ./data/MaiMBot:/MaiMBot/data
      - ./data/MaiMBot/plugins:/MaiMBot/plugins
      - ./data/MaiMBot/logs:/MaiMBot/logs
    restart: always
    networks:
      - maim_bot

networks:
  maim_bot:
    driver: bridge

命名网络的关键作用

所有容器都加入同一个自定义网络 maim_bot。在这个网络里,容器名就是 DNS 主机名。这意味着 Caddy 配置文件里可以直接写 reverse_proxy maim-bot-core:8001,而不需要查 IP——容器重建后 IP 变了也没关系。

volume 挂载策略

启动与重启

# 首次启动
docker compose up -d

# 修改配置后重启单个服务
docker compose restart caddy

# 查看所有容器状态
docker compose ps
restart: always:所有服务都配了这条。容器意外退出或宿主机重启后,Docker 会自动拉起,不需要手动干预。

为什么不用 systemd 单独管每个服务

单个容器配 systemd 反而更麻烦:每个服务要写 unit 文件、处理依赖顺序、单独管理日志。Docker Compose 把启动顺序(depends_on)、网络拓扑、卷管理和环境变量全部收敛到一份 YAML,运维成本显著更低。

← 返回首页