docker compose 수정 ,
parent
1a803b7fa0
commit
dc50fc6d8c
|
|
@ -2,8 +2,17 @@
|
|||
# TriplePick 백엔드 환경변수 — 복사: cp .env.example .env
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
|
||||
# DB (docker-compose 내부 네트워크 기본값). 로컬 단독이면 localhost 로.
|
||||
DATABASE_URL=postgresql+asyncpg://triplepick:triplepick@db:5432/triplepick
|
||||
# ── 데이터베이스 (외부 PostgreSQL 연결) ──
|
||||
# DB_HOST 가 설정되면 아래 DB_* 로 접속 URL 을 조합한다(특수문자 비밀번호 안전 처리).
|
||||
# 비밀번호에 # 가 들어가면 따옴표로 감쌀 것: DB_PASSWORD="비밀#번호"
|
||||
DB_NAME=triplepick
|
||||
DB_USER=o2o_db_admin
|
||||
DB_PASSWORD=changeme
|
||||
DB_HOST=172.30.1.36
|
||||
DB_PORT=5432
|
||||
|
||||
# (대안) DB_HOST 를 비워두면 아래 DATABASE_URL 을 그대로 사용. 로컬 sqlite 테스트 등.
|
||||
# DATABASE_URL=postgresql+asyncpg://triplepick:triplepick@localhost:5432/triplepick
|
||||
|
||||
# 일반
|
||||
TIMEZONE=Asia/Seoul
|
||||
|
|
|
|||
|
|
@ -16,11 +16,34 @@ class Settings(BaseSettings):
|
|||
)
|
||||
|
||||
# ── 데이터베이스 ─────────────────────────────────────────
|
||||
# docker-compose 의 db 서비스를 가리키는 기본값. 로컬 단독 실행 시 .env 로 덮어쓴다.
|
||||
# 외부 DB 연결: DB_HOST 가 설정되면 아래 DB_* 항목으로 접속 URL 을 조합한다
|
||||
# (비밀번호 특수문자는 SQLAlchemy 가 안전하게 인코딩). DB_HOST 미설정 시
|
||||
# database_url(또는 sqlite 등 직접 지정값)을 그대로 사용.
|
||||
db_host: str = ""
|
||||
db_port: int = 5432
|
||||
db_name: str = "triplepick"
|
||||
db_user: str = "triplepick"
|
||||
db_password: str = "triplepick"
|
||||
# 직접 지정용 폴백 (DB_HOST 미설정 시 사용). 로컬 sqlite 테스트 등.
|
||||
database_url: str = (
|
||||
"postgresql+asyncpg://triplepick:triplepick@db:5432/triplepick"
|
||||
)
|
||||
|
||||
def sqlalchemy_url(self): # noqa: ANN201
|
||||
"""엔진 생성용 URL. DB_HOST 가 있으면 DB_* 로 조합(특수문자 안전)."""
|
||||
if self.db_host:
|
||||
from sqlalchemy import URL
|
||||
|
||||
return URL.create(
|
||||
"postgresql+asyncpg",
|
||||
username=self.db_user,
|
||||
password=self.db_password,
|
||||
host=self.db_host,
|
||||
port=self.db_port,
|
||||
database=self.db_name,
|
||||
)
|
||||
return self.database_url
|
||||
|
||||
# ── 일반 ────────────────────────────────────────────────
|
||||
timezone: str = "Asia/Seoul" # 모든 경기 시각의 기준 (KST)
|
||||
cors_origins: str = "*" # 콤마구분. nginx 프록시 사용 시 동일 출처라 보통 불필요.
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class Base(DeclarativeBase):
|
|||
pass
|
||||
|
||||
|
||||
engine = create_async_engine(settings.database_url, echo=False, pool_pre_ping=True)
|
||||
engine = create_async_engine(settings.sqlalchemy_url(), echo=False, pool_pre_ping=True)
|
||||
|
||||
SessionLocal = async_sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,39 +1,21 @@
|
|||
# TriplePick — 전체 스택을 한 번에 실행.
|
||||
# db PostgreSQL
|
||||
# TriplePick — 외부 PostgreSQL 에 연결하는 구성 (로컬 db 컨테이너 없음).
|
||||
# api FastAPI (uvicorn)
|
||||
# worker APScheduler (상태전이 · 매일 AI 예측 생성 · 결과 메일)
|
||||
# frontend Vite 빌드 → nginx (정적 + /api 프록시)
|
||||
#
|
||||
# 실행: cp backend/.env.example backend/.env (키 채우기) → docker compose up --build
|
||||
# DB 는 이미 떠 있는 외부 PostgreSQL(예: 172.30.1.36:5432)에 연결한다.
|
||||
# backend/.env 에 DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORD 를 채우면
|
||||
# app 이 접속 URL 을 조합해 그 DB 에 스키마(테이블)를 생성한다.
|
||||
#
|
||||
# 실행: cp backend/.env.example backend/.env (DB·키 채우기) → docker compose up --build
|
||||
# 접속: http://localhost:8080
|
||||
|
||||
services:
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
environment:
|
||||
POSTGRES_USER: triplepick
|
||||
POSTGRES_PASSWORD: triplepick
|
||||
POSTGRES_DB: triplepick
|
||||
volumes:
|
||||
- pgdata:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U triplepick -d triplepick"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
ports:
|
||||
- "5432:5432"
|
||||
|
||||
api:
|
||||
build: ./backend
|
||||
env_file:
|
||||
- path: ./backend/.env
|
||||
required: false
|
||||
environment:
|
||||
DATABASE_URL: postgresql+asyncpg://triplepick:triplepick@db:5432/triplepick
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "8000:8000"
|
||||
|
||||
|
|
@ -43,11 +25,7 @@ services:
|
|||
env_file:
|
||||
- path: ./backend/.env
|
||||
required: false
|
||||
environment:
|
||||
DATABASE_URL: postgresql+asyncpg://triplepick:triplepick@db:5432/triplepick
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
api:
|
||||
condition: service_started
|
||||
|
||||
|
|
@ -57,6 +35,3 @@ services:
|
|||
- api
|
||||
ports:
|
||||
- "8080:80"
|
||||
|
||||
volumes:
|
||||
pgdata:
|
||||
|
|
|
|||
Loading…
Reference in New Issue