- 更新 build_docker.sh 到新仓库地址 - 仓库: Sanster/lama-cleaner → let5sne/IOPaint - 镜像标签: cwq1913/lama-cleaner → let5sne/iopaint - 项目名称: lama-cleaner → IOPaint - 重构 Dockerfile (CPU & GPU) - 从源码构建替代 PyPI 安装 - 更新基础镜像到最新版本 - CPU: python:3.11-slim-bookworm - GPU: nvidia/cuda:12.1.0-runtime-ubuntu22.04 - 使用最新的 PyTorch 和依赖版本 - 添加自动启动命令 - 更新 scripts/pack.sh - 构建目录: lama-cleaner → iopaint - 修复拼写错误 (Ensuer → Ensure) - 新增 docker/README.md - 完整的 Docker 部署指南 - 包含 CPU 和 GPU 两种模式 - Docker Compose 配置示例 - 故障排查和安全建议 主要改进: - ✨ 与当前项目完全同步 - 📦 支持从源码构建 - 🔧 更灵活的运行配置 - 📝 完整的使用文档 - 🚀 更新的依赖版本 🤖 Generated with Claude Code
235 lines
4.9 KiB
Markdown
235 lines
4.9 KiB
Markdown
# IOPaint Docker 部署指南
|
||
|
||
本目录包含 IOPaint 的 Docker 配置文件,支持 CPU 和 GPU 两种模式。
|
||
|
||
## 📦 可用镜像
|
||
|
||
### CPU 版本
|
||
适用于没有 NVIDIA GPU 的环境。
|
||
|
||
### GPU 版本
|
||
适用于有 NVIDIA GPU 的环境,性能更好。
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 使用预构建的镜像(推荐)
|
||
|
||
**CPU 模式:**
|
||
```bash
|
||
docker pull let5sne/iopaint:cpu-latest
|
||
docker run -d -p 8080:8080 let5sne/iopaint:cpu-latest
|
||
```
|
||
|
||
**GPU 模式:**
|
||
```bash
|
||
docker pull let5sne/iopaint:gpu-latest
|
||
docker run --gpus all -d -p 8080:8080 let5sne/iopaint:gpu-latest
|
||
```
|
||
|
||
访问 `http://localhost:8080` 使用 IOPaint。
|
||
|
||
### 从源码构建
|
||
|
||
**构建所有镜像:**
|
||
```bash
|
||
# 在项目根目录执行
|
||
bash build_docker.sh 1.0.0 # 替换为版本号
|
||
```
|
||
|
||
**构建单个镜像:**
|
||
|
||
CPU 版本:
|
||
```bash
|
||
docker build -f docker/CPUDockerfile -t let5sne/iopaint:cpu-latest .
|
||
```
|
||
|
||
GPU 版本:
|
||
```bash
|
||
docker build -f docker/GPUDockerfile -t let5sne/iopaint:gpu-latest .
|
||
```
|
||
|
||
## 🔧 运行配置
|
||
|
||
### 基础运行
|
||
|
||
```bash
|
||
# CPU 模式
|
||
docker run -d -p 8080:8080 let5sne/iopaint:cpu-latest
|
||
|
||
# GPU 模式(需要 nvidia-docker)
|
||
docker run --gpus all -d -p 8080:8080 let5sne/iopaint:gpu-latest
|
||
```
|
||
|
||
### 挂载数据目录
|
||
|
||
```bash
|
||
docker run -d \
|
||
-p 8080:8080 \
|
||
-v /path/to/input:/app/input \
|
||
-v /path/to/output:/app/output \
|
||
-v /path/to/models:/root/.cache \
|
||
let5sne/iopaint:gpu-latest
|
||
```
|
||
|
||
### 自定义启动参数
|
||
|
||
```bash
|
||
docker run -d -p 8080:8080 let5sne/iopaint:gpu-latest \
|
||
python3 main.py start \
|
||
--model runwayml/stable-diffusion-inpainting \
|
||
--device cuda \
|
||
--port 8080 \
|
||
--host 0.0.0.0
|
||
```
|
||
|
||
### 使用不同模型
|
||
|
||
```bash
|
||
# 使用 SD Inpainting 模型
|
||
docker run -d -p 8080:8080 let5sne/iopaint:gpu-latest \
|
||
python3 main.py start --model runwayml/stable-diffusion-inpainting --device cuda --port 8080 --host 0.0.0.0
|
||
|
||
# 使用 SDXL 模型(低内存模式)
|
||
docker run -d -p 8080:8080 let5sne/iopaint:gpu-latest \
|
||
python3 main.py start --model diffusers/stable-diffusion-xl-1.0-inpainting-0.1 --device cuda --low-mem --port 8080 --host 0.0.0.0
|
||
```
|
||
|
||
## 📊 Docker Compose
|
||
|
||
创建 `docker-compose.yml`:
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
|
||
services:
|
||
iopaint-gpu:
|
||
image: let5sne/iopaint:gpu-latest
|
||
ports:
|
||
- "8080:8080"
|
||
volumes:
|
||
- ./input:/app/input
|
||
- ./output:/app/output
|
||
- ./models:/root/.cache
|
||
deploy:
|
||
resources:
|
||
reservations:
|
||
devices:
|
||
- driver: nvidia
|
||
count: 1
|
||
capabilities: [gpu]
|
||
restart: unless-stopped
|
||
|
||
iopaint-cpu:
|
||
image: let5sne/iopaint:cpu-latest
|
||
ports:
|
||
- "8081:8080"
|
||
volumes:
|
||
- ./input:/app/input
|
||
- ./output:/app/output
|
||
- ./models:/root/.cache
|
||
restart: unless-stopped
|
||
```
|
||
|
||
启动:
|
||
```bash
|
||
# 启动 GPU 服务
|
||
docker-compose up -d iopaint-gpu
|
||
|
||
# 启动 CPU 服务
|
||
docker-compose up -d iopaint-cpu
|
||
```
|
||
|
||
## 🛠️ 环境变量
|
||
|
||
| 变量名 | 说明 | 默认值 |
|
||
|--------|------|--------|
|
||
| `HF_HOME` | HuggingFace 模型缓存目录 | `/root/.cache` |
|
||
| `PYTORCH_CUDA_ALLOC_CONF` | CUDA 内存分配配置 | - |
|
||
|
||
设置环境变量:
|
||
```bash
|
||
docker run -d \
|
||
-p 8080:8080 \
|
||
-e HF_HOME=/models \
|
||
-v /path/to/models:/models \
|
||
let5sne/iopaint:gpu-latest
|
||
```
|
||
|
||
## 📋 系统要求
|
||
|
||
### CPU 版本
|
||
- RAM: 至少 4GB
|
||
- 磁盘: 至少 10GB 可用空间
|
||
|
||
### GPU 版本
|
||
- NVIDIA GPU(支持 CUDA)
|
||
- VRAM:
|
||
- LaMa 模型: 至少 2GB
|
||
- SD Inpainting: 至少 8GB
|
||
- SDXL: 至少 12GB
|
||
- 磁盘: 至少 20GB 可用空间
|
||
- nvidia-docker 或 Docker 19.03+(支持 --gpus)
|
||
|
||
## 🔍 故障排查
|
||
|
||
### GPU 无法使用
|
||
|
||
检查 nvidia-docker 是否正确安装:
|
||
```bash
|
||
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
|
||
```
|
||
|
||
### 端口冲突
|
||
|
||
修改端口映射:
|
||
```bash
|
||
docker run -d -p 8888:8080 let5sne/iopaint:gpu-latest
|
||
```
|
||
|
||
### 模型下载慢
|
||
|
||
使用 HuggingFace 镜像:
|
||
```bash
|
||
docker run -d \
|
||
-p 8080:8080 \
|
||
-e HF_ENDPOINT=https://hf-mirror.com \
|
||
let5sne/iopaint:gpu-latest
|
||
```
|
||
|
||
### 内存不足
|
||
|
||
对于 SDXL 等大模型,使用低内存模式:
|
||
```bash
|
||
docker run -d -p 8080:8080 let5sne/iopaint:gpu-latest \
|
||
python3 main.py start --model diffusers/stable-diffusion-xl-1.0-inpainting-0.1 --device cuda --low-mem --cpu-offload --port 8080 --host 0.0.0.0
|
||
```
|
||
|
||
## 📖 更多信息
|
||
|
||
- 项目主页:https://github.com/let5sne/IOPaint
|
||
- 文档:查看项目根目录的 README.md
|
||
- 问题反馈:https://github.com/let5sne/IOPaint/issues
|
||
|
||
## 🔐 安全建议
|
||
|
||
1. **不要暴露到公网**:默认配置仅用于本地使用
|
||
2. **使用代理**:如需公网访问,建议使用 Nginx 反向代理并配置 HTTPS
|
||
3. **限制资源**:使用 Docker 资源限制避免过度占用系统资源
|
||
|
||
```bash
|
||
docker run -d \
|
||
-p 8080:8080 \
|
||
--memory="4g" \
|
||
--cpus="2.0" \
|
||
let5sne/iopaint:cpu-latest
|
||
```
|
||
|
||
## 📝 更新日志
|
||
|
||
### Version 1.0.0 (2025-11-28)
|
||
- 更新为 IOPaint 项目
|
||
- 使用最新依赖版本
|
||
- 支持 CUDA 12.1
|
||
- 从源码构建而非 PyPI 安装
|
||
- 添加详细的使用文档
|