# 卸载和清理 根据需求选择卸载范围。以下操作不可逆,请提前备份重要数据。 --- ## 卸载前:备份关键数据 ```bash cd /opt/youle/game-docker # 1. 备份 .env(包含所有密钥,不在版本库中) cp .env ~/youle-env-backup.env # 2. 备份 Redis 数据(如有业务数据存储在 Redis 中) docker exec youle-redis redis-cli -a "${REDIS_PASSWORD}" BGSAVE # 或直接备份 volume docker run --rm -v game-docker_redis-data:/data -v ~/:/backup alpine \ tar czf /backup/redis-data-backup.tar.gz /data # 3. 备份日志(按需) docker cp youle-api:/var/www/html/logs ~/api-logs-backup docker cp youle-dlweb:/var/www/html/api/logs ~/dlweb-logs-backup ``` --- ## 仅停止所有容器(保留镜像和数据,可随时恢复) ```bash cd /opt/youle/game-docker docker compose stop # 验证 docker compose ps ``` 恢复运行: ```bash docker compose start ``` --- ## 停止并删除容器(保留镜像、volumes 和项目文件) ```bash cd /opt/youle/game-docker docker compose down # 验证容器已删除 docker ps -a | grep youle ``` > 此操作不会删除数据 volume 和已构建的镜像,再次 `docker compose up -d` 可快速恢复,无需重新构建。 --- ## 完全卸载(删除容器 + volumes + 镜像) > **警告:** 以下操作将删除 Redis 缓存和所有日志数据,不可恢复。 ```bash cd /opt/youle/game-docker # 停止并删除容器 + 所有相关 volumes docker compose down -v # 删除本项目构建的镜像 docker rmi game-docker-api game-docker-dlweb game-docker-wxserver 2>/dev/null || true # 验证 docker volume ls | grep game-docker docker images | grep game-docker ``` --- ## 彻底清理(删除容器 + volumes + 镜像 + 项目目录 + SSL 证书) > **警告:** SSL 证书删除后需重新申请(Let's Encrypt 有频率限制,每 7 天最多 5 次)。 ```bash cd /opt/youle/game-docker # 1. 停止并删除容器 + volumes docker compose down -v # 2. 删除构建镜像 docker rmi game-docker-api game-docker-dlweb game-docker-wxserver 2>/dev/null || true # 3. 清理 Docker 悬空资源(可选) docker system prune -f # 4. 删除 SSL 证书 docker volume rm game-docker_certbot-certs game-docker_certbot-webroot 2>/dev/null || true # 5. 删除项目目录 rm -rf /opt/youle/game-docker ``` --- ## 删除单个服务的容器和镜像 ```bash cd /opt/youle/game-docker # 以 dlweb 为例 docker compose stop dlweb docker compose rm -sf dlweb docker rmi game-docker-dlweb # 下次启动时会重新构建 docker compose up -d --build dlweb ``` --- ## 清理定时任务残留 ```bash docker compose stop syncjob cronjob docker compose rm -sf syncjob cronjob # 清理共享信号 volume(如有残留暂停文件) docker run --rm -v game-docker_shared-signal:/shared alpine rm -f /shared/syncjob.pause # 如需完全删除共享 volume docker volume rm game-docker_shared-signal ``` --- ## 卸载操作速查 | 目标 | 命令 | 保留内容 | |------|------|----------| | 临时停止(可恢复) | `docker compose stop` | 容器 / 镜像 / volumes / 文件 | | 删除容器 | `docker compose down` | 镜像 / volumes / 文件 | | 删除容器 + volumes | `docker compose down -v` | 镜像 / 文件 | | 删除容器 + volumes + 镜像 | `docker compose down -v` + `docker rmi ...` | 文件 | | 完全清理 | 上述全部 + `rm -rf /opt/youle/game-docker` | 无 |