fix: deploy.sh reads MySQL config from .env instead of generating it
- Error out if .env is missing, instruct user to copy from .env.example - Source .env to load MYSQL_* variables for docker compose - Command-line port argument overrides PORT in .env
This commit is contained in:
@@ -78,48 +78,27 @@ setup_go_proxy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
# 4. 生成 .env 配置文件
|
# 4. 读取 .env 配置文件
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
setup_env() {
|
load_env() {
|
||||||
local port="${1:-9050}"
|
local port="${1:-9050}"
|
||||||
|
|
||||||
if [ -f ".env" ]; then
|
if [ ! -f ".env" ]; then
|
||||||
warn ".env 文件已存在,跳过生成"
|
error ".env 文件不存在,请先执行: cp .env.example .env 并填写 MySQL 连接信息"
|
||||||
# 确保端口是最新的
|
|
||||||
if grep -q "^PORT=" .env; then
|
|
||||||
sed -i "s/^PORT=.*/PORT=${port}/" .env
|
|
||||||
else
|
|
||||||
echo "PORT=${port}" >> .env
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
info "生成 .env 配置文件..."
|
info "读取 .env 配置..."
|
||||||
|
set -a
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source .env
|
||||||
|
set +a
|
||||||
|
|
||||||
# 生成随机 MySQL 密码
|
# 命令行参数覆盖 .env 中的 PORT
|
||||||
local mysql_password
|
if [ -n "$port" ]; then
|
||||||
mysql_password=$(openssl rand -base64 16 | tr -dc 'a-zA-Z0-9' | head -c 20)
|
export PORT="$port"
|
||||||
|
fi
|
||||||
|
|
||||||
cat > .env <<EOF
|
info "MySQL: ${MYSQL_USER}@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}"
|
||||||
# Server
|
|
||||||
PORT=${port}
|
|
||||||
GIN_MODE=release
|
|
||||||
SESSION_SECRET=
|
|
||||||
|
|
||||||
# Data directory
|
|
||||||
DATA_DIR=data
|
|
||||||
|
|
||||||
# MySQL
|
|
||||||
MYSQL_HOST=mysql
|
|
||||||
MYSQL_PORT=3306
|
|
||||||
MYSQL_USER=root
|
|
||||||
MYSQL_PASSWORD=${mysql_password}
|
|
||||||
MYSQL_DATABASE=pr_helper
|
|
||||||
EOF
|
|
||||||
|
|
||||||
info ".env 文件已生成"
|
|
||||||
info "MySQL 密码: ${mysql_password}"
|
|
||||||
warn "请妥善保管 .env 文件中的数据库密码!"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
@@ -184,7 +163,7 @@ main() {
|
|||||||
check_docker
|
check_docker
|
||||||
setup_docker_mirror
|
setup_docker_mirror
|
||||||
setup_go_proxy
|
setup_go_proxy
|
||||||
setup_env "$port"
|
load_env "$port"
|
||||||
build_and_start "$port"
|
build_and_start "$port"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user