chore(deploy): 数据库与各服务增加资源限制和优雅关闭保护
- postgres 增加 mem_limit/cpus/shm_size/stop_grace_period 与 PG 性能参数(shared_buffers 等,env 可覆盖);backend/web 增加 内存/CPU 限额与更长的优雅关闭宽限(生产与开发编排同步) - ubuntu-deploy.sh 增加部署前磁盘空间预检,防止备份或迁移 中途磁盘写满 - .env.server.example 补充资源变量;文档补充容器资源限制说明
This commit is contained in:
@@ -197,6 +197,32 @@ check_compose_config() {
|
||||
docker compose config >/dev/null || fail "Docker Compose 配置校验失败。"
|
||||
}
|
||||
|
||||
# 部署前磁盘空间预检:备份目录所在文件系统至少要有首份备份 + 现有备份量 2 倍的余量。
|
||||
# 不足时直接失败,避免备份或迁移过程中磁盘写满导致数据库不可用。
|
||||
ensure_disk_space() {
|
||||
local backup_root="${PROJECT_ROOT}/backups"
|
||||
local floor_kib=1048576 # 1GiB
|
||||
local existing_kib=0 require_kib free_kib
|
||||
|
||||
mkdir -p "${backup_root}" 2>/dev/null || true
|
||||
|
||||
if [[ -d "${backup_root}" ]]; then
|
||||
existing_kib="$(du -sk "${backup_root}" 2>/dev/null | awk '{print $1}' || true)"
|
||||
existing_kib="${existing_kib:-0}"
|
||||
fi
|
||||
|
||||
require_kib=$((existing_kib * 2))
|
||||
[[ ${require_kib} -lt ${floor_kib} ]] && require_kib=${floor_kib}
|
||||
|
||||
free_kib="$(df -Pk "${PROJECT_ROOT}" 2>/dev/null | awk 'NR==2 {print $4}' || true)"
|
||||
free_kib="${free_kib:-0}"
|
||||
|
||||
log "磁盘空间预检:可用 ${free_kib} KiB,备份目录已占用 ${existing_kib} KiB,要求至少 ${require_kib} KiB"
|
||||
if [[ ${free_kib} -lt ${require_kib} ]]; then
|
||||
fail "磁盘可用空间不足(可用 ${free_kib} KiB,需 ≥ ${require_kib} KiB)。请清理磁盘或调小 DB_BACKUP_KEEP 后重试。"
|
||||
fi
|
||||
}
|
||||
|
||||
pull_base_images() {
|
||||
log "拉取基础镜像"
|
||||
docker compose pull --ignore-buildable
|
||||
@@ -482,6 +508,7 @@ main() {
|
||||
validate_env_file
|
||||
confirm_reset_database
|
||||
ensure_data_dir
|
||||
ensure_disk_space
|
||||
deploy_stack
|
||||
wait_for_health
|
||||
print_applied_migrations
|
||||
|
||||
Reference in New Issue
Block a user