深度解析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
定义了所有服务共享的基础配置:
- 端口映射:默认将容器内的7860端口映射到主机的7860端口,可通过环境变量
WEBUI_PORT
自定义 - 数据卷:
./data:/data
:用于持久化模型和扩展数据./output:/output
:用于保存生成结果
- GPU资源:配置了NVIDIA GPU设备的预留,指定了计算和工具能力
- 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功能,实现了按需启动:
download
:仅启动下载服务auto
:启动AUTOMATIC1111的GPU版本auto-cpu
:启动AUTOMATIC1111的CPU版本comfy
:启动ComfyUI的GPU版本comfy-cpu
:启动ComfyUI的CPU版本
这种设计允许用户通过--profile
参数选择性地启动所需服务,避免资源浪费。
实际部署建议
- GPU环境:推荐使用
auto
或comfy
profile,充分利用GPU加速 - CPU环境:使用对应的
-cpu
变体,注意性能会显著降低 - 模型管理:先使用
download
profile获取必要模型,再启动WebUI - 端口冲突:通过
WEBUI_PORT
环境变量调整主机端口 - 数据持久化:确保
./data
和./output
目录存在并有适当权限
高级定制指南
- CLI参数调整:通过修改
environment
中的CLI_ARGS
自定义启动参数 - 资源限制:在
deploy.resources
中添加内存、CPU限制 - 多GPU支持:修改
device_ids
数组指定使用的GPU设备 - 构建定制:修改各服务的
build
上下文路径使用自定义Dockerfile
总结
该docker-compose配置提供了Stable Diffusion WebUI的完整容器化解决方案,通过模块化设计和profiles机制,实现了灵活的环境适配。无论是开发测试还是生产部署,都能找到合适的配置组合。理解这份配置的结构和原理,有助于用户根据自身需求进行定制和扩展。