프로젝트 기본 구성: Next.js + PostgreSQL + Gitea Actions 배포

- Next.js 15 (App Router, TypeScript, Tailwind), pg 커넥션 풀
- /api/health DB 헬스체크, standalone Dockerfile
- Gitea Actions: 빌드 → 컨테이너 교체 → Traefik(jskim.vexplor.com) 라우팅
- 로컬 개발용 SSH DB 터널 스크립트 (scripts/db-tunnel.sh)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
이 커밋은 다음에 포함됨:
kjs
2026-08-12 17:01:55 +09:00
co-authored by Claude Fable 5
커밋 f695b583e4
24개의 변경된 파일과 7365개의 추가작업 그리고 0개의 파일을 삭제
+23
파일 보기
@@ -0,0 +1,23 @@
import { Pool } from "pg";
// Next.js 개발 모드의 핫 리로드에서 Pool이 중복 생성되지 않도록 전역에 보관
const globalForDb = globalThis as unknown as { pgPool?: Pool };
export const db =
globalForDb.pgPool ??
new Pool({
connectionString: process.env.DATABASE_URL,
max: 10,
});
if (process.env.NODE_ENV !== "production") {
globalForDb.pgPool = db;
}
export async function query<T extends Record<string, unknown>>(
text: string,
params?: unknown[],
) {
const result = await db.query(text, params);
return result.rows as T[];
}