release: bump version to 0.74.3

This commit is contained in:
rayd1o
2026-09-13 02:17:55 +08:00
parent 1dd2921674
commit a54fcdbeed
17 changed files with 1160 additions and 80 deletions

117
planet.sh
View File

@@ -229,6 +229,8 @@ prepare_uv_build_config() {
prepare_uv_build_config
source "$SCRIPT_DIR/scripts/lib/docker-bootstrap.zsh"
# Shell / Docker helpers
is_pid() {
[[ "${1:-}" =~ ^[0-9]+$ ]] && [ "$1" -gt 0 ]
@@ -373,14 +375,6 @@ write_port_state() {
chmod 600 "$PLANET_PORT_STATE_FILE" 2>/dev/null || true
}
compose_available() {
docker compose version >/dev/null 2>&1
}
compose_v1_available() {
command -v docker-compose >/dev/null 2>&1
}
report_missing_compose() {
clear_wait_spinner
log_error "未检测到可用的 Docker Compose"
@@ -394,27 +388,9 @@ report_missing_compose() {
return 1
}
buildx_version() {
docker buildx version 2>/dev/null | awk '{print $2}' | sed 's/^v//'
}
buildx_meets_minimum() {
local current_version="$1"
local required_version="$2"
[ -n "$current_version" ] || return 1
[ -n "$required_version" ] || return 1
if [ "$(printf '%s\n%s\n' "$required_version" "$current_version" | sort -V | head -n 1)" = "$required_version" ]; then
return 0
fi
return 1
}
log_buildx_diagnostics_if_needed() {
local current_buildx_version=""
local required_buildx_version="0.17.0"
local required_buildx_version="$DOCKER_MIN_BUILDX_VERSION"
current_buildx_version="$(buildx_version)"
@@ -440,6 +416,10 @@ compose_up() {
if docker compose "${args[@]}"; then
return 0
fi
if ! compose_v1_available; then
log_error "Docker Compose 执行失败: docker compose ${arg_text}"
return 1
fi
log_warn "docker compose 执行失败,回退到 docker-compose v1"
fi
@@ -1298,47 +1278,6 @@ format_wait_elapsed_seconds() {
'
}
docker_daemon_available() {
docker info >/dev/null 2>&1
}
log_docker_daemon_diagnostics() {
local docker_service_status=""
local docker_socket_status=""
local service_hint="sudo systemctl enable --now docker.socket && sudo systemctl restart docker"
docker_service_status="$(systemctl is-active docker 2>/dev/null || true)"
docker_socket_status="$(systemctl is-active docker.socket 2>/dev/null || true)"
if [ -S /var/run/docker.sock ] && [ ! -r /var/run/docker.sock ]; then
log_note "检测到 /var/run/docker.sock 存在,但当前用户无法访问。"
log_note "请确认当前用户已加入 docker 组,并重新登录会话。"
return 0
fi
if [ "$docker_service_status" = "active" ]; then
log_note "Docker CLI 可执行,但当前会话仍无法连接 daemon。"
log_note "请先执行: docker info"
return 0
fi
if [ "$docker_service_status" = "failed" ] || [ "$docker_socket_status" = "failed" ]; then
log_note "检测到 Docker daemon 当前未正常运行。"
log_note "可先执行: ${service_hint}"
log_note "如仍失败,继续查看: journalctl -u docker.service -n 50 --no-pager"
return 0
fi
if [ "$docker_socket_status" != "active" ]; then
log_note "检测到 Docker socket 未激活,daemon 可能无法通过 systemd socket activation 启动。"
log_note "可先执行: ${service_hint}"
return 0
fi
log_note "当前无法连接 Docker daemon,请先执行: docker info"
log_note "若 daemon 未启动,可尝试: ${service_hint}"
}
print_database_failure_diagnostics() {
if ! docker_daemon_available; then
log_note "数据库容器尚未真正开始启动,当前失败更像是 Docker 运行时不可用。"
@@ -2505,15 +2444,16 @@ wait_for_postgres_health() {
}
start_database_services() {
docker start planet_postgres planet_redis >/dev/null 2>&1 || compose_up up -d postgres redis >/dev/null 2>&1
# Reconcile existing containers too; docker start cannot apply changed port bindings.
compose_up up -d --no-deps postgres redis
}
restart_database_services() {
docker restart planet_postgres planet_redis >/dev/null 2>&1 || compose_up up -d postgres redis >/dev/null 2>&1
start_database_services && docker restart planet_postgres planet_redis
}
start_postgres_service() {
docker start planet_postgres >/dev/null 2>&1 || compose_up up -d postgres >/dev/null 2>&1
compose_up up -d --no-deps postgres
}
# Backend lifecycle helpers
@@ -4046,6 +3986,21 @@ asyncio.run(init_db())
PY
}
verify_backend_database_connection() {
local check_status=0
local check_command=("$SCRIPT_DIR/.venv/bin/python" "$SCRIPT_DIR/scripts/check_database_connection.py")
set_wait_detail "验证后端实际 PostgreSQL 地址、端口与认证"
run_command_with_spinner "验证后端数据库连接" "${check_command[@]}" || check_status=$?
# Exit 2 means missing published ports; credentials and other failures must not recreate data services.
[ "$check_status" -eq 2 ] || return "$check_status"
log_warn "PostgreSQL 实际端口映射不匹配,保留数据卷并按 Compose 配置重建一次"
compose_up up -d --no-deps --force-recreate postgres || return 1
wait_for_postgres_health || return 1
run_command_with_spinner "重新验证后端数据库连接" "${check_command[@]}"
}
planet_app_services_running() {
local backend_port=""
local frontend_port=""
@@ -4109,6 +4064,14 @@ init() {
print_splash
start_wait_session "准备 Docker 运行环境"
if ! ensure_docker_runtime "${PLANET_COMMAND_ARGS[@]}"; then
stop_wait_session
exit 1
fi
stop_wait_session
log_success "Docker / Compose / Buildx 已就绪"
start_wait_session "准备 Python 运行时"
ensure_python_runtime
stop_wait_session
@@ -4132,6 +4095,11 @@ init() {
start_wait_session "启动数据库服务"
ensure_database_services_healthy
if ! verify_backend_database_connection; then
stop_wait_session
log_error "后端数据库连接检查失败,尚未执行建表和默认数据初始化"
exit 1
fi
stop_wait_session
log_success "数据库服务已就绪"
@@ -4677,9 +4645,16 @@ parse_global_args() {
trap cleanup_failed_start EXIT
PLANET_COMMAND_ARGS=("$@")
parse_global_args "$@"
set -- "${GLOBAL_ARG_REMAINDER[@]}"
case "$1" in
init|start|restart|stop|health|log|createuser)
refresh_docker_group "${PLANET_COMMAND_ARGS[@]}" || exit 1
;;
esac
case "$1" in
init)
shift