迁移步骤详解
要将 /home/docker/song-schedule 完整迁移到新服务器,需确保 代码、数据、镜像、配置 的一致性。以下是具体操作流程:
1. 在旧服务器上准备迁移文件 1.1 打包项目目录
# 进入项目目录
cd /home/docker
# 压缩整个目录(包含子目录和隐藏文件)
tar czvf song-schedule.tar.gz song-schedule/
1.2 导出 Docker 镜像 由于服务依赖本地构建的镜像(如 super-nginx:001、super-mall-admin-server:v001),需将镜像导出为文件:
# 列出所有相关镜像
docker images | grep -E "super-nginx|super-mall-admin-server|super-notes-server"
# 导出镜像(示例)
docker save -o super-nginx-001.tar super-nginx:001
docker save -o super-mall-admin-server-v001.tar super-mall-admin-server:v001
docker save -o super-notes-server-v002.tar super-notes-server:v002
1.3 复制文件到新服务器 将以下文件通过 scp 或 rsync 传输到新服务器的相同路径(如 /home/docker): • song-schedule.tar.gz
• 导出的镜像文件(super-nginx-001.tar 等)
• 证书目录 /home/cert(如果新服务器没有证书需同步)
• 挂载的日志和文件目录(如 /mnt/logs)
# 示例:使用 scp 传输
scp song-schedule.tar.gz root@新服务器IP:/home/docker/
scp /home/cert/* root@新服务器IP:/home/cert/
scp /mnt/logs/song-schedule/* root@新服务器IP:/mnt/logs/song-schedule/
2. 在新服务器上恢复环境 2.1 解压项目目录
# 进入目标目录
cd /home/docker
# 解压文件
tar xzvf song-schedule.tar.gz
2.2 加载 Docker 镜像
# 加载镜像(需在解压后的目录外操作)
docker load -i super-nginx-001.tar
docker load -i super-mall-admin-server-v001.tar
docker load -i super-notes-server-v002.tar
# 验证镜像是否加载成功
docker images | grep -E "super-nginx|super-mall-admin-server|super-notes-server"
2.3 创建必要目录 检查所有挂载的宿主机目录是否存在:
# 创建日志目录
mkdir -p /mnt/logs/song-schedule/{file,super-mall-admin,super-notes}
# 创建文件存储目录
mkdir -p /home/docker/song-schedule/file/defaultBucketName
# 设置目录权限(避免容器无权限写入)
chmod -R 755 /mnt/logs /home/docker/song-schedule
3. 修改配置适配新环境 检查 docker-compose.yml 中以下内容是否需调整: 3.1 路径一致性 • 确保所有挂载的 宿主机路径 在新服务器存在(如 /home/cert、/mnt/logs)。
• 如果新服务器路径不同,需修改 volumes 部分(例如将 /home/cert 改为 /etc/nginx/cert)。
3.2 端口冲突 检查新服务器的端口是否被占用(如 8084-8087、8090):
netstat -tuln | grep -E "8084|8085|8086|8087|8090"
若端口冲突,修改 ports 配置(如 "8088:443")。
3.3 证书配置 确保 /home/cert 目录包含有效的 SSL 证书文件(如 cert.pem 和 key.pem),且文件名与 Nginx 配置中的路径一致。
4. 启动服务
# 进入项目目录
cd /home/docker/song-schedule
# 启动所有服务(使用 -d 后台运行)
docker-compose up -d
# 查看服务状态
docker-compose ps
# 检查容器日志(示例)
docker-compose logs super-web-nginx
5. 验证迁移结果
docker ps -a | grep "song-schedule"
常见问题处理 • 问题1:容器启动失败,提示 “No such file or directory”
• 原因:挂载的宿主机目录不存在或权限不足。
• 解决:检查目录路径和权限,确保与 docker-compose.yml 一致。
• 问题2:Nginx 报错 “SSL certificate not found”
• 原因:证书文件未正确挂载到容器。
• 解决:确认 /home/cert 中有证书文件,且容器内路径 /etc/nginx/cert 映射正确。
• 问题3:端口冲突
• 解决:修改 docker-compose.yml 中的宿主机端口(如 "8091:443"),然后重启服务:
```bash
docker-compose down && docker-compose up -d
—
**迁移后优化建议**
1. 使用 Docker Registry:将镜像推送到私有仓库(如 Harbor),避免手动导出导入。
2. 环境变量化配置:将路径、端口等提取到 `.env` 文件,便于跨环境管理:
```properties
# .env 文件示例
CERT_PATH=/home/cert
LOG_PATH=/mnt/logs
在 docker-compose.yml 中引用:
volumes:
– ${CERT_PATH}:/etc/nginx/cert
通过以上步骤,您可以完整迁移服务并确保数据一致性。如果遇到问题,可通过 docker-compose logs <服务名> 查看详细错误日志。
评论前必须登录!
注册