96 lines
2.5 KiB
Bash
96 lines
2.5 KiB
Bash
#!/bin/bash
|
|
# Docker 镜像导出脚本
|
|
# 用于将 Docker 镜像打包成 tar 文件,方便迁移到目标机器
|
|
# 使用方法: ./docker-export.sh
|
|
|
|
set -e
|
|
|
|
echo "=== Docker 镜像导出脚本 ==="
|
|
echo ""
|
|
|
|
# 检查镜像是否存在
|
|
echo "1. 检查镜像是否存在..."
|
|
if ! docker images | grep -q "rag-rag-api"; then
|
|
echo "Error: rag-rag-api 镜像不存在,请先运行: docker-compose build"
|
|
exit 1
|
|
fi
|
|
|
|
if ! docker images | grep -q "chromadb/chroma"; then
|
|
echo "Error: chromadb/chroma 镜像不存在"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建导出目录
|
|
EXPORT_DIR="docker-images-export"
|
|
mkdir -p "$EXPORT_DIR"
|
|
|
|
echo ""
|
|
echo "2. 导出 rag-api 镜像..."
|
|
docker save rag-rag-api:latest -o "$EXPORT_DIR/rag-api.tar"
|
|
|
|
echo ""
|
|
echo "3. 导出 chromadb 镜像..."
|
|
# 获取 chromadb 镜像的实际标签
|
|
CHROMA_TAG=$(docker images chromadb/chroma --format "{{.Repository}}:{{.Tag}}" | head -1)
|
|
if [ -z "$CHROMA_TAG" ]; then
|
|
echo "Error: 无法找到 chromadb 镜像"
|
|
exit 1
|
|
fi
|
|
docker save "$CHROMA_TAG" -o "$EXPORT_DIR/chromadb.tar"
|
|
|
|
echo ""
|
|
echo "4. 创建迁移说明文件..."
|
|
cat > "$EXPORT_DIR/README.txt" << 'README_EOF'
|
|
Docker 镜像迁移说明
|
|
==================
|
|
|
|
包含的镜像:
|
|
1. rag-api.tar - RAG API 服务镜像
|
|
2. chromadb.tar - ChromaDB 向量数据库镜像
|
|
|
|
迁移步骤:
|
|
---------
|
|
|
|
1. 将以下文件复制到目标机器:
|
|
- docker-images-export/ 目录(包含所有 .tar 文件)
|
|
- .env 文件(环境变量配置)
|
|
- databases_config.json 文件(如果使用多数据库配置)
|
|
- docker-run.sh 脚本(启动脚本)
|
|
|
|
2. 在目标机器上加载镜像:
|
|
cd docker-images-export
|
|
docker load -i rag-api.tar
|
|
docker load -i chromadb.tar
|
|
|
|
3. 在目标机器上启动服务:
|
|
# 确保 .env 和 databases_config.json 在项目根目录
|
|
chmod +x docker-run.sh
|
|
./docker-run.sh
|
|
|
|
4. 查看服务状态:
|
|
docker ps
|
|
docker logs -f rag-api
|
|
docker logs -f rag-chromadb
|
|
|
|
注意事项:
|
|
---------
|
|
- 确保目标机器已安装 Docker
|
|
- 确保 .env 文件中的配置(如 MySQL、Ollama 地址)适合目标机器
|
|
- ChromaDB 数据会存储在 ./chroma_db_data 目录(需要挂载)
|
|
- 日志会存储在 ./logs 目录(需要挂载)
|
|
README_EOF
|
|
|
|
echo ""
|
|
echo "=== 导出完成 ==="
|
|
echo "导出目录: $EXPORT_DIR/"
|
|
echo "包含文件:"
|
|
echo " - rag-api.tar"
|
|
echo " - chromadb.tar"
|
|
echo " - README.txt"
|
|
echo ""
|
|
echo "可选: 压缩导出目录以便传输"
|
|
echo " tar -czf docker-images-export.tar.gz $EXPORT_DIR"
|
|
echo ""
|
|
echo "迁移到目标机器后,按照 $EXPORT_DIR/README.txt 中的说明操作"
|
|
|