You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lingshu/build_docker_package.sh

76 lines
2.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/bin/bash
# 灵枢平台 Docker 离线打包脚本
# 在有网络的机器上运行,生成可离线部署的压缩包
set -e
OUTPUT="lingshu_docker_package"
IMAGE_NAME="lingshu_app"
echo "================================================"
echo " 灵枢平台 - Docker 离线打包"
echo "================================================"
# 构建镜像
echo "[1/4] 构建应用镜像..."
docker build -t $IMAGE_NAME .
# 拉取 MySQL 镜像(如果没有)
echo "[2/4] 获取 MySQL 8.0 镜像..."
docker pull mysql:8.0
# 导出镜像为 tar
echo "[3/4] 导出镜像文件..."
mkdir -p $OUTPUT
docker save $IMAGE_NAME | gzip > $OUTPUT/lingshu_app.tar.gz
docker save mysql:8.0 | gzip > $OUTPUT/mysql8.tar.gz
# 复制部署文件
echo "[4/4] 复制部署文件..."
cp docker-compose.yml $OUTPUT/
cp 灵枢数据库设计.sql $OUTPUT/
cp init_demo_data.sql $OUTPUT/ 2>/dev/null || echo " (无 init_demo_data.sql跳过)"
cp deploy.sh $OUTPUT/ 2>/dev/null || true
# 写入目标机器的一键启动脚本
cat > $OUTPUT/install_and_run.sh << 'EOF'
#!/bin/bash
echo "================================================"
echo " 灵枢平台 - 离线安装启动"
echo "================================================"
echo "[1/3] 导入镜像首次约需1-2分钟..."
docker load < lingshu_app.tar.gz
docker load < mysql8.tar.gz
echo "[2/3] 启动服务..."
docker compose up -d
echo "[3/3] 等待数据库初始化..."
sleep 15
echo ""
echo "================================================"
echo " 启动完成!"
echo " 访问地址: http://localhost:5000"
echo " 停止服务: docker compose down"
echo " 查看日志: docker compose logs -f"
echo "================================================"
EOF
chmod +x $OUTPUT/install_and_run.sh
# 打包
echo ""
echo "正在压缩..."
tar -czf ${OUTPUT}.tar.gz $OUTPUT/
rm -rf $OUTPUT/
echo ""
echo "================================================"
echo " 打包完成: ${OUTPUT}.tar.gz"
echo " 发给朋友后,他只需:"
echo " 1. 安装 Docker Desktop"
echo " 2. 解压并进入文件夹"
echo " 3. 运行 bash install_and_run.sh"
echo " 4. 浏览器打开 http://localhost:5000"
echo "================================================"