Includes FastAPI+Jinja2+HTMX+SQLite implementation with seed categories, plus deployment templates. Co-authored-by: Cursor <cursoragent@cursor.com>
70 lines
1.5 KiB
YAML
70 lines
1.5 KiB
YAML
services:
|
|
web:
|
|
build:
|
|
context: ./apps/web
|
|
dockerfile: Dockerfile
|
|
environment:
|
|
NODE_ENV: production
|
|
PORT: 3000
|
|
DATABASE_URL: ${DATABASE_URL}
|
|
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-https://prompt.ncue.net}
|
|
restart: unless-stopped
|
|
networks:
|
|
- allprompt
|
|
|
|
caddy:
|
|
image: caddy:2
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
environment:
|
|
CADDY_EMAIL: ${CADDY_EMAIL}
|
|
depends_on:
|
|
- web
|
|
restart: unless-stopped
|
|
networks:
|
|
- allprompt
|
|
|
|
# 1회성: 스키마 적용(필요할 때만)
|
|
db_init:
|
|
image: postgres:16
|
|
profiles: ["init"]
|
|
volumes:
|
|
- ./apps/web/db/schema.sql:/schema.sql:ro
|
|
environment:
|
|
PGHOST: ${PGHOST:-ncue.net}
|
|
PGDATABASE: ${PGDATABASE:-all_prompt}
|
|
PGUSER: ${PGUSER:-ncue}
|
|
PGPASSWORD: ${PGPASSWORD}
|
|
entrypoint: ["/bin/bash", "-lc"]
|
|
command: ["psql -v ON_ERROR_STOP=1 -f /schema.sql"]
|
|
networks:
|
|
- allprompt
|
|
|
|
# 1회성: 시드 데이터(필요할 때만)
|
|
db_seed:
|
|
build:
|
|
context: ./apps/web
|
|
dockerfile: Dockerfile
|
|
profiles: ["init"]
|
|
environment:
|
|
NODE_ENV: production
|
|
DATABASE_URL: ${DATABASE_URL}
|
|
entrypoint: ["/bin/bash", "-lc"]
|
|
command: ["node -e \"console.log('Seeding...')\" && npx prisma db seed --schema prisma/schema.prisma"]
|
|
networks:
|
|
- allprompt
|
|
|
|
networks:
|
|
allprompt:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
caddy_data:
|
|
caddy_config:
|
|
|