Files
backend_v2/init-db.sh
toom1996 2e76507d37 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
2026-10-21 00:02:18 +08:00

60 lines
2.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# 首次建库:把导出的 SQL 灌进 PostgreSQL
#
# ./init-db.sh /path/to/dump.sql
#
# 数据库由 1Panel 管理(独立的 postgres 容器,端口不对外发布),所以直接
# docker exec 进那个容器跑 psql —— 服务器上不需要装 psql,也不依赖宿主端口。
#
# 容器名在 .env 的 PG_CONTAINER 里;不确定就看:
# docker ps --format '{{.Names}}' | grep -i postgres
#
# 注意:只在库为空时执行一次;已有数据时重跑会与现有行冲突。
set -euo pipefail
cd "$(dirname "$0")"
[ -f .env ] || { echo "!! 缺少 .env:先 cp .env.example .env 并填写"; exit 1; }
set -a; . ./.env; set +a
DUMP="${1:-}"
if [ -z "$DUMP" ]; then
echo "用法:./init-db.sh <dump.sql>"
echo ""
echo " 请传入一份与当前代码匹配的 SQL(含全部新增迁移)。"
echo " 导出命令(开发机):go run ./cmd/dbtool dump -with-extension -out db/backups/db_dump.sql"
exit 1
fi
[ -f "$DUMP" ] || { echo "!! 找不到 dump 文件:$DUMP"; exit 1; }
PG_CONTAINER="${PG_CONTAINER:?PG_CONTAINER 未设置:填 .env 里那个 postgres 容器名}"
if ! docker inspect "$PG_CONTAINER" >/dev/null 2>&1; then
echo "!! 容器不存在:$PG_CONTAINER"
echo " docker ps --format '{{.Names}}' | grep -i postgres"
exit 1
fi
run_psql() {
docker exec -i -e PGPASSWORD="${DB_PASSWORD:?DB_PASSWORD 未设置}" "$PG_CONTAINER" \
psql -U "${DB_USER:-fashion}" -d "${DB_NAME:-fashion}" "$@"
}
echo "==> 检查连接(容器 $PG_CONTAINER)"
if ! run_psql -c 'select 1' >/dev/null 2>&1; then
echo "!! 连不上。检查 DB_USER / DB_NAME / DB_PASSWORD 是否与该容器一致"
exit 1
fi
echo "==> 检查 pgvector"
if run_psql -tAc "select 1 from pg_available_extensions where name = 'vector'" 2>/dev/null | grep -q 1; then
echo " pgvector 可用"
else
echo " !! 该 Postgres 没有 pgvector:dump 里的 vector 类型会导入失败"
echo " 换用带 pgvector 的镜像,或先安装扩展后重试"
exit 1
fi
echo "==> 导入 $DUMP"
run_psql -v ON_ERROR_STOP=1 < "$DUMP"
echo "==> 完成。可以执行 ./deploy.sh all 启动全部服务"