mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-07-18 12:29:37 +02:00
78 lines
3 KiB
YAML
78 lines
3 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:v2.11
|
|
command:
|
|
- "--api.insecure=true" # Enable Traefik dashboard (remove in production)
|
|
- "--providers.docker=true"
|
|
- "--entrypoints.web.address=:80"
|
|
- "--entrypoints.websecure.address=:443"
|
|
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
|
|
- "--certificatesresolvers.letsencrypt.acme.email=your-email@example.com" # Replace with your email
|
|
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
- "traefik-letsencrypt:/letsencrypt"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
|
|
db:
|
|
image: postgis/postgis:15-3.3
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: database
|
|
POSTGRES_USER: adventure
|
|
POSTGRES_PASSWORD: your_postgres_password # Replace with the actual password
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data/
|
|
|
|
web:
|
|
image: ghcr.io/seanmorley15/adventurelog-frontend:latest
|
|
restart: unless-stopped
|
|
environment:
|
|
PUBLIC_SERVER_URL: "http://server:8000"
|
|
BODY_SIZE_LIMIT: "100000"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.adventurelogweb.entrypoints=websecure"
|
|
- "traefik.http.routers.adventurelogweb.rule=Host(`yourdomain.com`) && !(PathPrefix(`/media`) || PathPrefix(`/admin`) || PathPrefix(`/static`) || PathPrefix(`/accounts`))" # Replace with your domain
|
|
- "traefik.http.routers.adventurelogweb.tls=true"
|
|
- "traefik.http.routers.adventurelogweb.tls.certresolver=letsencrypt"
|
|
depends_on:
|
|
- server
|
|
|
|
server:
|
|
image: ghcr.io/seanmorley15/adventurelog-backend:latest
|
|
restart: unless-stopped
|
|
environment:
|
|
PGHOST: "db"
|
|
PGDATABASE: "database"
|
|
PGUSER: "adventure"
|
|
PGPASSWORD: your_postgres_password # Replace with the actual password
|
|
SECRET_KEY: your_secret_key # Replace with the actual secret key
|
|
DJANGO_ADMIN_USERNAME: "admin"
|
|
DJANGO_ADMIN_PASSWORD: your_admin_password # Replace with the actual admin password
|
|
DJANGO_ADMIN_EMAIL: "adventurelog-admin@yourdomain.com" # Replace with your email
|
|
PUBLIC_URL: "https://yourdomain.com" # Replace with your domain
|
|
CSRF_TRUSTED_ORIGINS: "https://yourdomain.com" # Replace with your domain
|
|
DEBUG: "false"
|
|
FRONTEND_URL: "https://yourdomain.com" # Replace with your domain
|
|
volumes:
|
|
- adventurelog-media:/code/media
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.adventurelogserver.entrypoints=websecure"
|
|
- "traefik.http.routers.adventurelogserver.rule=Host(`yourdomain.com`) && (PathPrefix(`/media`) || PathPrefix(`/admin`) || PathPrefix(`/static`) || PathPrefix(`/accounts`))" # Replace with your domain
|
|
- "traefik.http.routers.adventurelogserver.tls=true"
|
|
- "traefik.http.routers.adventurelogserver.tls.certresolver=letsencrypt"
|
|
depends_on:
|
|
- db
|
|
|
|
volumes:
|
|
postgres-data:
|
|
adventurelog-media:
|
|
traefik-letsencrypt:
|