fix: DB 연결 재시도 + git 인증 + 볼륨 경로 수정
- db.js: waitForDB() 추가 (최대 10회, 3초 간격 재시도) - app.js: DB 연결 시 waitForDB 사용 - start-server.sh: git 유저명 @를 %40으로 인코딩 - docker-compose.yml: 볼륨 상대경로로 변경 (./data/) - 디렉토리 권한 문제 해결 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+2
-2
@@ -75,8 +75,8 @@ app.use('/', publicRouter);
|
||||
// ===== 시작 =====
|
||||
async function start() {
|
||||
try {
|
||||
// DB 연결 확인
|
||||
await db.query('SELECT 1');
|
||||
// DB 연결 대기 (재시도)
|
||||
await db.waitForDB();
|
||||
console.log('[DB] PostgreSQL 연결 성공');
|
||||
|
||||
// 스케줄러 초기화
|
||||
|
||||
@@ -8,13 +8,31 @@ const pool = new Pool({
|
||||
password: process.env.DB_PASSWORD || '',
|
||||
max: 20,
|
||||
idleTimeoutMillis: 30000,
|
||||
connectionTimeoutMillis: 10000,
|
||||
});
|
||||
|
||||
pool.on('error', (err) => {
|
||||
console.error('[DB] Unexpected error on idle client', err);
|
||||
});
|
||||
|
||||
/**
|
||||
* DB 연결 재시도 (최대 10회, 3초 간격)
|
||||
*/
|
||||
async function waitForDB(retries = 10, delay = 3000) {
|
||||
for (let i = 1; i <= retries; i++) {
|
||||
try {
|
||||
await pool.query('SELECT 1');
|
||||
return true;
|
||||
} catch (err) {
|
||||
console.log(`[DB] 연결 대기 중... (${i}/${retries}) - ${err.message}`);
|
||||
if (i === retries) throw new Error('DB 연결 실패: 최대 재시도 횟수 초과');
|
||||
await new Promise(r => setTimeout(r, delay));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
query: (text, params) => pool.query(text, params),
|
||||
pool,
|
||||
waitForDB,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user