diff --git a/deploy.sh b/deploy.sh index ff64aed..637f9cd 100755 --- a/deploy.sh +++ b/deploy.sh @@ -78,36 +78,89 @@ setup_go_proxy() { } # ---------------------------------------------------------- -# 4. 配置服务端口 +# 4. 生成 .env 配置文件 # ---------------------------------------------------------- -setup_port() { +setup_env() { local port="${1:-9050}" - local compose_file="docker-compose.yml" - info "配置服务端口为 ${port}..." - sed -i "s/- \"8080:8080\"/- \"${port}:8080\"/" "$compose_file" - info "端口配置完成: ${port}" + if [ -f ".env" ]; then + warn ".env 文件已存在,跳过生成" + # 确保端口是最新的 + if grep -q "^PORT=" .env; then + sed -i "s/^PORT=.*/PORT=${port}/" .env + else + echo "PORT=${port}" >> .env + fi + return + fi + + info "生成 .env 配置文件..." + + # 生成随机 MySQL 密码 + local mysql_password + mysql_password=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | head -c 20) + + cat > .env </dev/null; then + info "MySQL 就绪" + break + fi + retries=$((retries - 1)) + sleep 2 + done + + if [ $retries -eq 0 ]; then + warn "MySQL 启动超时,继续等待应用自行重连..." + sleep 10 + fi + + info "等待应用启动..." sleep 3 if docker compose ps | grep -q "running\|Up"; then info "==========================================" info " PR-Helper 部署成功!" info "==========================================" - info "访问地址: http://$(hostname -I | awk '{print $1}'):${PORT:-9050}" - info "本地访问: http://localhost:${PORT:-9050}" + info "访问地址: http://$(hostname -I | awk '{print $1}'):${port}" + info "本地访问: http://localhost:${port}" + info "" + info "数据库配置: .env" info "" info "常用命令:" info " 查看日志: docker compose logs -f" @@ -124,7 +177,6 @@ build_and_start() { # ---------------------------------------------------------- main() { local port="${1:-9050}" - export PORT="$port" info "开始部署 PR-Helper..." info "目标端口: ${port}" @@ -132,8 +184,8 @@ main() { check_docker setup_docker_mirror setup_go_proxy - setup_port "$port" - build_and_start + setup_env "$port" + build_and_start "$port" } main "$@"