프로젝트 기본 구성: 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>
이 커밋은 다음에 포함됨:
+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[];
|
||||
}
|
||||
새 이슈에서 참조
사용자 차단