97 lines
2.4 KiB
YAML
97 lines
2.4 KiB
YAML
services:
|
|
db:
|
|
image: postgis/postgis:15-3.4
|
|
container_name: teeoff_db
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
volumes:
|
|
- teeoff_db_data:/var/lib/postgresql/data
|
|
restart: unless-stopped
|
|
|
|
api:
|
|
build: ./backend
|
|
container_name: teeoff_api
|
|
environment:
|
|
DATABASE_URL: ${DATABASE_URL}
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
|
|
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
|
|
PUBLIC_BASE_URL: ${PUBLIC_BASE_URL}
|
|
PUBLIC_SESSION_SECRET: ${PUBLIC_SESSION_SECRET}
|
|
PUBLIC_COMMENT_DEFAULT_STATUS: ${PUBLIC_COMMENT_DEFAULT_STATUS}
|
|
SMTP_SERVER: ${SMTP_SERVER}
|
|
SMTP_PORT: ${SMTP_PORT}
|
|
SMTP_USER: ${SMTP_USER}
|
|
SMTP_PASS: ${SMTP_PASS}
|
|
PUBLIC_FROM_EMAIL: ${PUBLIC_FROM_EMAIL}
|
|
PUBLIC_MAGIC_LINK_MAX_AGE_MINUTES: ${PUBLIC_MAGIC_LINK_MAX_AGE_MINUTES}
|
|
INDEXNOW_KEY: ${INDEXNOW_KEY}
|
|
volumes:
|
|
- ./backend:/app
|
|
- ./frontend/src/content:/shared/frontend-content:ro
|
|
- ./frontend/public/media:/app/public/media
|
|
depends_on:
|
|
- db
|
|
restart: unless-stopped
|
|
expose:
|
|
- "8000"
|
|
|
|
worker:
|
|
build: ./backend
|
|
container_name: teeoff_worker
|
|
command: python worker.py
|
|
environment:
|
|
DATABASE_URL: ${DATABASE_URL}
|
|
GEMINI_API_KEY: ${GEMINI_API_KEY}
|
|
SMTP_SERVER: ${SMTP_SERVER}
|
|
SMTP_PORT: ${SMTP_PORT}
|
|
SMTP_USER: ${SMTP_USER}
|
|
SMTP_PASS: ${SMTP_PASS}
|
|
EMAIL_TO: ${EMAIL_TO}
|
|
volumes:
|
|
- ./backend:/app
|
|
depends_on:
|
|
- db
|
|
restart: unless-stopped
|
|
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
args:
|
|
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL}
|
|
container_name: teeoff_frontend
|
|
command: npm start
|
|
environment:
|
|
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL}
|
|
PUBLIC_SESSION_SECRET: ${PUBLIC_SESSION_SECRET}
|
|
volumes:
|
|
- ./frontend/public:/app/public
|
|
depends_on:
|
|
- api
|
|
restart: unless-stopped
|
|
expose:
|
|
- "3000"
|
|
|
|
caddy:
|
|
image: caddy:2
|
|
container_name: teeoff_caddy
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
environment:
|
|
ACME_EMAIL: ${ACME_EMAIL}
|
|
volumes:
|
|
- ./deploy/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
depends_on:
|
|
- frontend
|
|
- api
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
teeoff_db_data:
|
|
caddy_data:
|
|
caddy_config:
|