deploy: 本地预构建发布(push-build),对齐 1Panel 与 backend_v2 目录
- 新增 Dockerfile.prebuilt / scripts/push-build.sh:本机构建、只上传产物,服务器零编译 - deploy.sh 增加 --prebuilt(自动 --no-pull + 产物校验),并保留 --no-cache - compose 支持 BACKEND_DOCKERFILE / WEB_DOCKERFILE 切换;预构建时用 prebuilt 变体 - init-db.sh / scripts/backup-db.sh 改为 docker exec 1Panel 的 Postgres 容器 - WEB_DIR 默认改为 ../frontend_v2;nginx 切换文件改到 .deploy/ 避免弄脏工作区 - 新增 .gitattributes 固定脚本与配置为 LF
This commit is contained in:
30
scripts/backup-db.sh
Normal file
30
scripts/backup-db.sh
Normal file
@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
# 备份 1Panel 管理的 Postgres(直接 docker exec 进它的容器,不依赖宿主端口)
|
||||
#
|
||||
# ./scripts/backup-db.sh # 输出 backups/db-YYYY-MM-DD-HHMMSS.sql.gz
|
||||
# KEEP_DAYS=7 ./scripts/backup-db.sh # 顺手删掉 7 天前的备份
|
||||
#
|
||||
# cron(每天 4 点):
|
||||
# 0 4 * * * cd /opt/fashion/backend && KEEP_DAYS=7 ./scripts/backup-db.sh >> .deploy/backup.log 2>&1
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
[ -f .env ] || { echo "!! 缺少 .env"; exit 1; }
|
||||
set -a; . ./.env; set +a
|
||||
|
||||
PG_CONTAINER="${PG_CONTAINER:?PG_CONTAINER 未设置:填 .env 里那个 postgres 容器名}"
|
||||
KEEP_DAYS="${KEEP_DAYS:-0}"
|
||||
mkdir -p backups
|
||||
|
||||
OUT="backups/db-$(date +%F-%H%M%S).sql.gz"
|
||||
echo "==> 备份到 $OUT"
|
||||
docker exec -e PGPASSWORD="${DB_PASSWORD:?DB_PASSWORD 未设置}" "$PG_CONTAINER" \
|
||||
pg_dump -U "${DB_USER:-fashion}" "${DB_NAME:-fashion}" | gzip > "$OUT"
|
||||
|
||||
echo " $(du -h "$OUT" | cut -f1)"
|
||||
|
||||
if [ "$KEEP_DAYS" -gt 0 ]; then
|
||||
find backups -name 'db-*.sql.gz' -mtime +"$KEEP_DAYS" -print -delete
|
||||
fi
|
||||
|
||||
echo "==> 完成"
|
||||
Reference in New Issue
Block a user