a217d13483
엔티티를 추가하면 개발에서는 동작하지만 운영 배포 시 테이블이 생성되지 않는 구조적 결함이 있었다. app.module 은 운영에서 migrationsRun 을 켜두었지만 마이그레이션을 만들 수단(DataSource·CLI 스크립트·디렉터리)이 전혀 없었고, 규칙 문서도 "운영에서는 마이그레이션이 강제된다"는 원칙만 있고 절차가 없었다. - CLI 전용 DataSource(src/data-source.ts)와 migration:* 스크립트 추가. ts-node 에 tsconfig-paths 를 등록해 엔티티가 @/ alias 를 써도 동작한다. - DB 접속 설정을 database.config.ts 로 모아 앱과 CLI 가 공유하게 함. 두 곳에 나눠 적으면 반드시 어긋난다. - synchronize 기본값을 false 로 변경 (DB_SYNCHRONIZE=true 로 개발 한정 opt-in). 켜져 있으면 개발 DB 가 항상 최신이라 migration:generate 가 "변경 없음"만 내놓아 마이그레이션을 만들 수 없다 — 이것이 위 결함의 직접 원인이었다. 운영에서는 이 값과 무관하게 항상 비활성화된다. - 엔티티 추가 절차와 주의사항(생성 SQL 검토, 커밋 후 수정 금지)을 문서화하고 커밋 전 체크리스트에 스키마 변경 항목 추가. generate → run → revert 전 과정을 임시 엔티티로 검증했다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
56 lines
1.7 KiB
Bash
56 lines
1.7 KiB
Bash
# ==========================================
|
|
# 프로젝트 전역 설정
|
|
# ==========================================
|
|
PROJECT_NAME=project
|
|
APP_ENV=production
|
|
BUILD_MODE=production
|
|
FRONTEND_DIR=frontend
|
|
BACKEND_DIR=backend
|
|
|
|
# ==========================================
|
|
# 포트 설정
|
|
# ==========================================
|
|
FRONTEND_PORT=80
|
|
BACKEND_PORT=3000
|
|
WEBSOCKET_PORT=3001
|
|
DB_PORT=5432
|
|
REDIS_PORT=6379
|
|
|
|
# ==========================================
|
|
# Database 설정
|
|
# ==========================================
|
|
DB_IMAGE=postgres:15-alpine
|
|
DB_USER=app_user
|
|
DB_PASSWORD=CHANGE-ME-BEFORE-DEPLOY
|
|
DB_NAME=project_db
|
|
DB_DATA_DIR=./data/postgres
|
|
|
|
# ==========================================
|
|
# Redis 설정
|
|
# ==========================================
|
|
REDIS_IMAGE=redis:7-alpine
|
|
REDIS_PASSWORD=CHANGE-ME-BEFORE-DEPLOY
|
|
REDIS_DATA_DIR=./data/redis
|
|
|
|
# ==========================================
|
|
# API 경로 설정
|
|
# ==========================================
|
|
BACKEND_API_URL=http://localhost:3000/api
|
|
CORS_ORIGIN=http://localhost:5173
|
|
|
|
# ==========================================
|
|
# Rate Limiting (API 남용 방지)
|
|
# 미설정 시 백엔드 기본값(60초 / 100회) 사용
|
|
# ==========================================
|
|
THROTTLE_TTL_MS=60000
|
|
THROTTLE_LIMIT=100
|
|
|
|
# ==========================================
|
|
# DB 스키마 동기화 (개발 전용, 기본 false)
|
|
# true 로 켜면 엔티티 변경이 DB 에 자동 반영되어 빠르게 실험할 수 있지만,
|
|
# 그 상태에서는 migration:generate 가 "변경 없음"만 내놓는다.
|
|
# 운영으로 갈 코드라면 꺼둔 채 마이그레이션으로 관리할 것.
|
|
# (운영 환경에서는 이 값과 무관하게 항상 비활성화된다)
|
|
# ==========================================
|
|
DB_SYNCHRONIZE=false
|