优化一键脚本

This commit is contained in:
yml
2026-06-11 08:46:10 +08:00
parent 8d9d00beb6
commit 6ada7393ef
+11 -15
View File
@@ -127,14 +127,13 @@ validate_env() {
exit 1
fi
local app_env caddy_domain caddy_email mysql_dsn redis_addr storage_endpoint admin_base_path
local app_env caddy_domain caddy_email mysql_dsn redis_addr storage_endpoint
app_env="$(require_env APP_ENV)"
caddy_domain="$(require_env CADDY_DOMAIN)"
caddy_email="$(require_env CADDY_EMAIL)"
mysql_dsn="$(require_env MYSQL_DSN)"
redis_addr="$(require_env REDIS_ADDR)"
storage_endpoint="$(require_env STORAGE_ENDPOINT)"
admin_base_path="$(require_env VITE_ADMIN_BASE_PATH)"
require_env MYSQL_DATABASE >/dev/null
require_env MYSQL_ROOT_PASSWORD >/dev/null
require_env MYSQL_USER >/dev/null
@@ -174,14 +173,6 @@ validate_env() {
log_error "STORAGE_ENDPOINT 仍指向本机,请改为 http://minio:9000"
exit 1
fi
if [[ ! "${admin_base_path}" =~ ^/[A-Za-z0-9][A-Za-z0-9._-]*$ ]]; then
log_error "VITE_ADMIN_BASE_PATH 必须是单段路径,例如 /manage-7x9k2p,当前值:${admin_base_path}"
exit 1
fi
if [[ "${admin_base_path}" == "/admin" || "${admin_base_path}" == "/m" || "${admin_base_path}" == "/api" ]]; then
log_error "VITE_ADMIN_BASE_PATH 不能使用 ${admin_base_path},请改成不公开的后台入口"
exit 1
fi
if awk -F= '/^[A-Z0-9_]+=/{ if ($0 ~ /=(change-|保持你的|你的)/) found=1 } END { exit found ? 0 : 1 }' "${BACKEND_ENV}"; then
log_error "backend/.env 里还有占位值,请先替换后再部署"
exit 1
@@ -189,16 +180,18 @@ validate_env() {
}
compose() {
docker compose -f "${COMPOSE_FILE}" "$@"
docker compose --env-file "${BACKEND_ENV}" -f "${COMPOSE_FILE}" "$@"
}
compose_user_cmd() {
printf "docker compose --env-file backend/.env -f deploy/docker-compose.prod.yml"
}
export_caddy_env() {
export CADDY_DOMAIN
export CADDY_EMAIL
export VITE_ADMIN_BASE_PATH
CADDY_DOMAIN="$(require_env CADDY_DOMAIN)"
CADDY_EMAIL="$(require_env CADDY_EMAIL)"
VITE_ADMIN_BASE_PATH="$(require_env VITE_ADMIN_BASE_PATH)"
}
public_url() {
@@ -240,7 +233,10 @@ wait_service_healthy() {
sleep 1
done
log_error "${label} 启动超时,请执行:docker compose -f deploy/docker-compose.prod.yml logs ${service}"
log_error "${label} 启动超时"
log_warn "最近 ${service} 日志:"
compose logs --tail=120 "${service}" || true
log_error "可继续执行:$(compose_user_cmd) logs ${service}"
exit 1
}
@@ -350,7 +346,7 @@ main() {
wait_http_ready
log_success "部署完成:$(public_url)"
log "常用命令:docker compose -f deploy/docker-compose.prod.yml logs -f caddy backend"
log "常用命令:$(compose_user_cmd) logs -f caddy backend"
if [[ "${FOLLOW_LOGS}" == "1" ]]; then
compose logs -f backend