首页
/ 深度解析stable-diffusion-webui-docker的docker-compose部署方案

深度解析stable-diffusion-webui-docker的docker-compose部署方案

2025-07-07 04:24:46作者:宣海椒Queenly

项目概述

stable-diffusion-webui-docker项目提供了基于Docker容器化部署Stable Diffusion WebUI的解决方案,通过精心设计的docker-compose.yml文件,让用户可以轻松地在不同硬件环境下运行Stable Diffusion的各种变体。

核心架构设计

该docker-compose文件采用了YAML锚点(anchor)和引用(alias)的高级特性,实现了配置的模块化和复用。文件定义了一个基础服务模板base_service,其他服务通过继承和扩展这个模板来构建,这种设计大大减少了配置冗余,提高了可维护性。

基础服务配置解析

base_service定义了所有服务共享的基础配置:

  1. 端口映射:默认将容器内的7860端口映射到主机的7860端口,可通过环境变量WEBUI_PORT自定义
  2. 数据卷
    • ./data:/data:用于持久化模型和扩展数据
    • ./output:/output:用于保存生成结果
  3. GPU资源:配置了NVIDIA GPU设备的预留,指定了计算和工具能力
  4. TTY和信号:启用TTY并设置SIGKILL作为停止信号

服务类型详解

1. 下载服务(download)

专用于模型下载的独立服务,特点:

  • 使用单独的构建上下文./services/download/
  • 仅挂载数据卷用于保存下载的模型
  • 需要通过profiles: ["download"]显式激活

2. AUTOMATIC1111 WebUI服务

提供AUTOMATIC1111版本的Stable Diffusion WebUI,包含两个变体:

GPU版本(auto)

  • 继承基础服务配置
  • 构建路径./services/AUTOMATIC1111
  • 使用特定镜像标签sd-auto:78
  • 环境参数:
    • --allow-code:允许执行自定义脚本
    • --medvram:中等显存优化模式
    • --xformers:启用xformers优化
    • --enable-insecure-extension-access:允许不安全扩展
    • --api:启用API接口

CPU版本(auto-cpu)

  • 去除了GPU资源配置(deploy: {})
  • 特殊环境参数:
    • --no-half:禁用半精度计算
    • --precision full:使用全精度
    • 其他参数与GPU版本一致

3. ComfyUI服务

提供ComfyUI版本的Stable Diffusion,同样包含两个变体:

GPU版本(comfy)

  • 构建路径./services/comfy/
  • 使用镜像标签sd-comfy:7
  • 默认不添加额外CLI参数

CPU版本(comfy-cpu)

  • 去除了GPU资源配置
  • 添加--cpu参数强制使用CPU模式

部署策略与profiles机制

该配置巧妙地使用了Docker Compose的profiles功能,实现了按需启动:

  1. download:仅启动下载服务
  2. auto:启动AUTOMATIC1111的GPU版本
  3. auto-cpu:启动AUTOMATIC1111的CPU版本
  4. comfy:启动ComfyUI的GPU版本
  5. comfy-cpu:启动ComfyUI的CPU版本

这种设计允许用户通过--profile参数选择性地启动所需服务,避免资源浪费。

实际部署建议

  1. GPU环境:推荐使用autocomfy profile,充分利用GPU加速
  2. CPU环境:使用对应的-cpu变体,注意性能会显著降低
  3. 模型管理:先使用download profile获取必要模型,再启动WebUI
  4. 端口冲突:通过WEBUI_PORT环境变量调整主机端口
  5. 数据持久化:确保./data./output目录存在并有适当权限

高级定制指南

  1. CLI参数调整:通过修改environment中的CLI_ARGS自定义启动参数
  2. 资源限制:在deploy.resources中添加内存、CPU限制
  3. 多GPU支持:修改device_ids数组指定使用的GPU设备
  4. 构建定制:修改各服务的build上下文路径使用自定义Dockerfile

总结

该docker-compose配置提供了Stable Diffusion WebUI的完整容器化解决方案,通过模块化设计和profiles机制,实现了灵活的环境适配。无论是开发测试还是生产部署,都能找到合适的配置组合。理解这份配置的结构和原理,有助于用户根据自身需求进行定制和扩展。