优化任务状态投影和部署文档

This commit is contained in:
yml
2026-05-28 11:12:40 +08:00
parent 9709643583
commit ccc350cfea
15 changed files with 759 additions and 55 deletions
+41
View File
@@ -64,6 +64,23 @@ validate_env_file() {
site_addr="$(read_env_value CADDY_SITE_ADDR)"
[[ -n "${site_addr}" ]] || fail ".env 缺少 CADDY_SITE_ADDR。"
HEALTH_URL="${site_addr%/}/health/ready"
validate_database_url_for_compose
}
validate_database_url_for_compose() {
local database_url
database_url="$(read_env_value DATABASE_URL)"
if [[ -z "${database_url}" ]]; then
return
fi
if [[ "${database_url}" == *"@localhost:"* \
|| "${database_url}" == *"@127.0.0.1:"* \
|| "${database_url}" == *"@[::1]:"* ]]; then
fail ".env 的 DATABASE_URL 当前指向本机地址。Docker 部署时后端容器内的 localhost 不是 postgres 容器,请改为 postgres 服务名或外部数据库地址。"
fi
}
ensure_data_dir() {
@@ -111,6 +128,27 @@ wait_for_health() {
fail "部署已启动但健康检查未通过,请根据日志排查。"
}
print_applied_migrations() {
log "已应用数据库迁移"
local migrations
if migrations="$(docker compose exec -T backend node --input-type=module -e '
const { query, closeDb } = await import("./dist/db/client.js");
try {
const result = await query("SELECT filename FROM schema_migrations ORDER BY filename");
console.log(result.rows.map((row) => row.filename).join("\n") || "(无迁移记录)");
} finally {
await closeDb();
}
' 2>&1)"; then
printf '%s\n' "${migrations}"
return
fi
warn "读取迁移记录失败:"
printf '%s\n' "${migrations}"
}
print_diagnostics() {
warn "当前容器状态:"
docker compose ps || true
@@ -128,6 +166,8 @@ print_diagnostics() {
warn "后端 ready 接口:"
docker compose exec -T backend sh -lc 'curl -fsS http://127.0.0.1:3000/health/ready || true' || true
print_applied_migrations || true
}
main() {
@@ -139,6 +179,7 @@ main() {
ensure_data_dir
deploy_stack
wait_for_health
print_applied_migrations
log "部署完成"
docker compose ps