Skip to content

Commit 4f4282d

Browse files
committed
feat: Enhance Docker Compose detection and backup functionality
- Added functions to detect if a container is managed by Docker Compose. - Implemented backup of Docker Compose files and related configurations. - Updated backup structure to include a dedicated directory for Docker Compose files. - Enhanced restore script to support Docker Compose containers. - Updated README to reflect new features and usage examples. - Added test scripts for validating Docker Compose detection.
1 parent 94e2bd3 commit 4f4282d

File tree

5 files changed

+1087
-13
lines changed

5 files changed

+1087
-13
lines changed

README.md

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ docker-backup-menu
5050
- **一键恢复**:在新服务器上快速恢复容器和数据
5151
- **增量支持**:智能识别和备份变更的数据
5252
- **交互式菜单**:图形化操作界面,新手友好
53+
- **Docker Compose支持**:自动检测并备份docker-compose项目
5354

5455
### 高级特性
5556
- **灵活配置**:支持配置文件和命令行参数
@@ -319,6 +320,30 @@ docker-cleanup --preview 30
319320

320321
## 🖥️ 交互式菜单详解
321322

323+
### Docker Compose自动检测
324+
325+
备份脚本会自动检测容器是否由docker-compose管理:
326+
327+
#### 检测方法
328+
1. **容器标签检测**:检查`com.docker.compose.project``com.docker.compose.service`标签
329+
2. **容器名称模式**:识别`project_service_number`命名模式
330+
3. **网络名称检测**:查找`project_default`网络模式
331+
332+
#### 检测结果
333+
- **Docker Compose容器**:自动备份compose文件、环境配置,生成compose恢复脚本
334+
- **普通容器**:使用传统的docker run命令恢复
335+
336+
#### 备份内容差异
337+
| 内容 | 普通容器 | Docker Compose容器 |
338+
|------|----------|-------------------|
339+
| 容器配置 |||
340+
| 数据卷 |||
341+
| 挂载点 |||
342+
| 镜像 |||
343+
| docker-compose.yml |||
344+
| .env文件 |||
345+
| 恢复方式 | docker run | docker-compose up |
346+
322347
### 菜单功能概览
323348

324349
运行 `docker-backup-menu` 后,你将看到一个包含18个选项的交互式菜单:
@@ -413,6 +438,7 @@ EXCLUDE_CONTAINER_LABELS="backup=false"
413438

414439
## 📁 备份目录结构
415440

441+
### 普通Docker容器
416442
```
417443
backup_dir/
418444
├── config/ # 容器配置文件
@@ -438,6 +464,23 @@ backup_dir/
438464
└── backup_summary.txt # 备份摘要
439465
```
440466

467+
### Docker Compose容器
468+
```
469+
backup_dir/
470+
├── config/ # 容器配置文件
471+
├── volumes/ # 数据卷备份
472+
├── mounts/ # 挂载点备份
473+
├── logs/ # 容器日志
474+
├── compose/ # Docker Compose文件
475+
│ ├── docker-compose.yml # 主配置文件
476+
│ ├── .env # 环境变量文件
477+
│ ├── compose_info.txt # 项目和服务信息
478+
│ └── compose_directory.txt # 原始目录路径
479+
├── project_service_image.tar.gz # 容器镜像(完整备份)
480+
├── restore.sh # 自动恢复脚本(支持docker-compose)
481+
└── backup_summary.txt # 备份摘要
482+
```
483+
441484
## 🔧 实际使用示例
442485

443486
### 场景1:Web应用备份
@@ -451,7 +494,25 @@ scp -r nginx_20231201_120000/ user@new-server:/tmp/
451494
ssh user@new-server "cd /tmp && ./docker-restore.sh nginx_20231201_120000"
452495
```
453496

454-
### 场景2:定期自动备份
497+
### 场景2:Docker Compose项目备份
498+
499+
```bash
500+
# 1. 备份docker-compose项目(自动检测)
501+
./docker-backup.sh -f myproject_web_1
502+
503+
# 2. 备份会包含:
504+
# - 容器配置和数据
505+
# - docker-compose.yml文件
506+
# - .env环境文件
507+
# - 其他配置文件
508+
509+
# 3. 在新服务器恢复
510+
scp -r myproject_web_1_20231201_120000/ user@new-server:/tmp/
511+
ssh user@new-server "cd /tmp/myproject_web_1_20231201_120000 && ./restore.sh"
512+
# 恢复脚本会自动使用docker-compose启动服务
513+
```
514+
515+
### 场景3:定期自动备份
455516

456517
#### 方法1:使用系统服务(推荐)
457518
```bash
@@ -506,7 +567,7 @@ chmod +x /usr/local/bin/docker-backup-sync.sh
506567
echo "0 3 * * * /usr/local/bin/docker-backup-sync.sh" | sudo crontab -
507568
```
508569

509-
### 场景3:生产环境迁移
570+
### 场景4:生产环境迁移
510571

511572
```bash
512573
# 1. 在源服务器备份所有容器
@@ -531,7 +592,7 @@ done
531592
EOF
532593
```
533594

534-
### 场景4:容器迁移到新名称
595+
### 场景5:容器迁移到新名称
535596

536597
```bash
537598
# 备份原容器

0 commit comments

Comments
 (0)