connect to database; separate dev and prod DATABASE_URL

This commit is contained in:
2026-05-15 21:17:21 +08:00
parent 2787eb961d
commit 07829fa16e
4 changed files with 52 additions and 0 deletions
+2
View File
@@ -8,3 +8,5 @@ wheels/
# Virtual environments # Virtual environments
.venv .venv
.env
+9
View File
@@ -0,0 +1,9 @@
FROM python:3.14-slim
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir fastapi uvicorn sqlalchemy psycopg2-binary httpx python-jose
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
+8
View File
@@ -0,0 +1,8 @@
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
DATABASE_URL = os.getenv("DATABASE_URL")
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(bind=engine)
+33
View File
@@ -0,0 +1,33 @@
version: "3.9"
services:
db:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_USER: ${SERVICE_USER_POSTGRESQL}
POSTGRES_PASSWORD: ${SERVICE_PASSWORD_POSTGRESQL}
POSTGRES_DB: roleplay
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test:
- CMD-SHELL
- 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'
interval: 5s
timeout: 20s
retries: 10
app:
build: .
depends_on:
- db
environment:
DATABASE_URL: postgresql://${SERVICE_USER_POSTGRESQL}:${SERVICE_PASSWORD_POSTGRESQL}@db:5432/roleplay
GOOGLE_CLIENT_ID: your_client_id
GOOGLE_CLIENT_SECRET: your_secret
ports:
- "8000:8000"
volumes:
postgres_data: