Files
gen2d/deploy.sh
T
wonder 2c5f83f64e feat(deploy): 支持通过 .env 文件注入后端环境变量
- docker-compose.yml 添加 env_file 加载 backend/.env
- deploy.sh 自动检测并从 .env.example 复制模板
- .dockerignore 排除 .env 防止密钥泄露到镜像
2026-05-24 21:39:49 +08:00

73 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
REPO_URL="git@gitee.com:hezhaohui123/gen2d.git"
INSTALL_DIR="${GEN2D_DIR:-$HOME/gen2d}"
PORT="${GEN2D_PORT:-10000}"
echo "==> gen2d 一键部署脚本"
# 1. 安装依赖检查
for cmd in git docker; do
if ! command -v "$cmd" &>/dev/null; then
echo "错误: 未找到 $cmd,请先安装"
exit 1
fi
done
if ! docker compose version &>/dev/null && ! docker-compose version &>/dev/null; then
echo "错误: 未找到 docker compose,请先安装"
exit 1
fi
# 2. 拉取代码
if [ -d "$INSTALL_DIR/.git" ]; then
echo "==> 目录 $INSTALL_DIR 已存在,拉取最新代码..."
cd "$INSTALL_DIR"
git pull
else
echo "==> 克隆仓库到 $INSTALL_DIR ..."
git clone "$REPO_URL" "$INSTALL_DIR"
cd "$INSTALL_DIR"
fi
# 3. 环境变量检查
ENV_FILE="$INSTALL_DIR/backend/.env"
ENV_EXAMPLE="$INSTALL_DIR/backend/.env.example"
if [ ! -f "$ENV_FILE" ]; then
if [ -f "$ENV_EXAMPLE" ]; then
echo "==> 未找到 backend/.env,已从 .env.example 复制模板"
cp "$ENV_EXAMPLE" "$ENV_FILE"
echo " 请编辑 $ENV_FILE 填入实际配置后重新运行本脚本"
exit 0
else
echo "错误: backend/.env 和 .env.example 均不存在,请手动创建"
exit 1
fi
fi
# 4. 构建并启动
echo "==> 构建并启动 Docker 容器..."
if docker compose version &>/dev/null; then
COMPOSE_CMD="docker compose"
else
COMPOSE_CMD="docker-compose"
fi
GEN2D_PORT="$PORT" $COMPOSE_CMD up -d --build
# 获取公网 IP
PUBLIC_IP=$(curl -s --connect-timeout 3 https://ifconfig.me 2>/dev/null || \
curl -s --connect-timeout 3 https://api.ipify.org 2>/dev/null || \
echo "YOUR_SERVER_IP")
echo ""
echo "==> 部署完成!"
echo " 前端访问: http://$PUBLIC_IP:$PORT"
echo " 后端健康检查: http://$PUBLIC_IP:$PORT/api/v1/health"
echo ""
echo "常用命令:"
echo " 查看日志: cd $INSTALL_DIR && $COMPOSE_CMD logs -f"
echo " 停止服务: cd $INSTALL_DIR && $COMPOSE_CMD down"
echo " 重启服务: cd $INSTALL_DIR && $COMPOSE_CMD restart"