Nye-TeeOff/docker-compose.prod.yml

96 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}
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: