204 lines
4.5 KiB
Markdown
204 lines
4.5 KiB
Markdown
# Docker Compose配置编辑指南
|
||
|
||
## 🎯 功能概述
|
||
安全地编辑和管理三台服务器(ubuntu1, ubuntu2, NAS)上的Docker Compose配置文件。
|
||
|
||
## 📁 目录结构
|
||
```
|
||
~/.openclaw/workspace/
|
||
├── docker-apps.yaml # 应用映射配置
|
||
├── docker-config-editor.sh # 配置编辑工具
|
||
└── DOCKER_CONFIG_EDITOR_GUIDE.md # 本指南
|
||
```
|
||
|
||
## 🛠️ 工具功能
|
||
|
||
### 1. 查看当前配置
|
||
```bash
|
||
./docker-config-editor.sh <服务器> <应用> show
|
||
示例: ./docker-config-editor.sh ubuntu1 portainer show
|
||
```
|
||
|
||
### 2. 创建备份
|
||
```bash
|
||
./docker-config-editor.sh <服务器> <应用> backup
|
||
示例: ./docker-config-editor.sh ubuntu1 portainer backup
|
||
```
|
||
|
||
### 3. 验证配置格式
|
||
```bash
|
||
./docker-config-editor.sh <服务器> <应用> validate
|
||
示例: ./docker-config-editor.sh ubuntu1 portainer validate
|
||
```
|
||
|
||
### 4. 重启应用
|
||
```bash
|
||
./docker-config-editor.sh <服务器> <应用> restart
|
||
示例: ./docker-config-editor.sh ubuntu1 portainer restart
|
||
```
|
||
|
||
## 🔄 安全编辑工作流程
|
||
|
||
### 步骤1:查看当前配置
|
||
```bash
|
||
./docker-config-editor.sh ubuntu1 portainer show
|
||
```
|
||
|
||
### 步骤2:创建备份
|
||
```bash
|
||
./docker-config-editor.sh ubuntu1 portainer backup
|
||
```
|
||
|
||
### 步骤3:下载配置文件到本地
|
||
```bash
|
||
scp ubuntu1:/home/shenwei/Docker/portainer/docker-compose.yml /tmp/portainer-docker-compose.yml
|
||
```
|
||
|
||
### 步骤4:编辑本地文件
|
||
```bash
|
||
# 使用你喜欢的编辑器编辑文件
|
||
vim /tmp/portainer-docker-compose.yml
|
||
# 或
|
||
nano /tmp/portainer-docker-compose.yml
|
||
```
|
||
|
||
### 步骤5:显示修改差异
|
||
```bash
|
||
# 获取原文件
|
||
ssh ubuntu1 "cat /home/shenwei/Docker/portainer/docker-compose.yml" > /tmp/original.yml
|
||
# 比较差异
|
||
diff -u /tmp/original.yml /tmp/portainer-docker-compose.yml
|
||
```
|
||
|
||
### 步骤6:上传并验证
|
||
```bash
|
||
# 上传修改后的文件
|
||
scp /tmp/portainer-docker-compose.yml ubuntu1:/home/shenwei/Docker/portainer/docker-compose.yml
|
||
# 验证配置格式
|
||
./docker-config-editor.sh ubuntu1 portainer validate
|
||
```
|
||
|
||
### 步骤7:重启应用
|
||
```bash
|
||
./docker-config-editor.sh ubuntu1 portainer restart
|
||
```
|
||
|
||
## 📋 支持的修改类型
|
||
|
||
### 1. 修改端口映射
|
||
```yaml
|
||
# 修改前
|
||
ports:
|
||
- "9000:9000"
|
||
|
||
# 修改后
|
||
ports:
|
||
- "9001:9000"
|
||
```
|
||
|
||
### 2. 修改数据卷挂载
|
||
```yaml
|
||
# 修改前
|
||
volumes:
|
||
- ./data:/data
|
||
|
||
# 修改后
|
||
volumes:
|
||
- /volume1/docker/portainer/data:/data
|
||
```
|
||
|
||
### 3. 修改环境变量
|
||
```yaml
|
||
# 修改前
|
||
environment:
|
||
- DB_HOST=localhost
|
||
|
||
# 修改后
|
||
environment:
|
||
- DB_HOST=mysql
|
||
- DB_PORT=3306
|
||
```
|
||
|
||
### 4. 更新镜像版本
|
||
```yaml
|
||
# 修改前
|
||
image: portainer/portainer-ce:2.19
|
||
|
||
# 修改后
|
||
image: portainer/portainer-ce:latest
|
||
```
|
||
|
||
## ⚠️ 安全注意事项
|
||
|
||
### 备份策略
|
||
- 每次修改前自动创建备份
|
||
- 保留最近5个备份文件
|
||
- 备份文件名格式:`docker-compose.yml.backup.YYYYMMDDHHMMSS`
|
||
|
||
### 验证机制
|
||
1. **语法验证**:使用 `docker compose config` 验证YAML语法
|
||
2. **差异对比**:修改前后显示差异
|
||
3. **应用验证**:重启后检查应用状态
|
||
|
||
### 回滚机制
|
||
如果修改后验证失败:
|
||
1. 自动回滚到最新备份
|
||
2. 报告回滚状态
|
||
3. 保留错误日志
|
||
|
||
## 🚀 快速开始示例
|
||
|
||
### 示例1:修改portainer端口
|
||
```bash
|
||
# 1. 查看当前配置
|
||
./docker-config-editor.sh ubuntu1 portainer show
|
||
|
||
# 2. 创建备份
|
||
./docker-config-editor.sh ubuntu1 portainer backup
|
||
|
||
# 3. 下载并编辑
|
||
scp ubuntu1:/home/shenwei/Docker/portainer/docker-compose.yml /tmp/
|
||
# 编辑文件,修改端口
|
||
|
||
# 4. 显示差异并确认
|
||
# 5. 上传并验证
|
||
# 6. 重启应用
|
||
```
|
||
|
||
### 示例2:更新rsshub镜像版本
|
||
```bash
|
||
# 类似流程,修改image标签
|
||
```
|
||
|
||
## 📊 服务器路径映射
|
||
|
||
| 服务器 | Docker应用路径 | 示例应用 |
|
||
|--------|----------------|----------|
|
||
| ubuntu1 | `/home/shenwei/Docker/` | portainer, rsshub, it-tools |
|
||
| ubuntu2 | `/home/shenwei/docker/` | cloudflared, uptime-kuma |
|
||
| NAS | `/volume1/docker/` | navidrome, mysql80 |
|
||
|
||
## 🔍 故障排除
|
||
|
||
### 常见问题
|
||
1. **连接失败**:检查SSH配置和网络连接
|
||
2. **权限问题**:确保有文件读写权限
|
||
3. **配置语法错误**:使用 `docker compose config` 验证
|
||
4. **应用启动失败**:检查Docker日志
|
||
|
||
### 调试命令
|
||
```bash
|
||
# 查看Docker日志
|
||
ssh ubuntu1 "cd /home/shenwei/Docker/portainer && docker compose logs"
|
||
|
||
# 查看容器状态
|
||
ssh ubuntu1 "cd /home/shenwei/Docker/portainer && docker compose ps"
|
||
|
||
# 查看备份文件
|
||
ssh ubuntu1 "ls -la /home/shenwei/Docker/portainer/docker-compose.yml.backup.*"
|
||
```
|
||
|
||
## 📝 最后更新
|
||
- 创建时间:2026-03-13
|
||
- 最后更新:2026-03-13
|
||
- 版本:1.0.0 |