Files
pargar/deploy/compose/compose.dev.yaml
T
ahp 75e2892e36 fix: release v0.2.1 lesson deletes and large uploads
- Raise Traefik read timeout to 1h (compose dev/prod + k3s HelmChartConfig)
  so admin video uploads up to 200MB no longer 502 mid-upload.
- Migration 0029: cascade watch/quiz history on lesson delete and unlink
  dependent lessons, so removing a lesson or chapter stops 500ing.
- Add the Apollo cluster Helm overlay (values-apollo.yaml) for the deployed
  environment.
- k3s Traefik chart config also enables access logs, cross-namespace
  IngressRoutes, and fixes the Prometheus scrape port.

Bump appVersion/product.go/values tags to 0.2.1; chart version 0.2.3.
2026-10-16 09:44:23 +03:30

100 lines
2.7 KiB
YAML

# Local / staging-on-laptop overlay (Traefik + published data ports + mild limits).
# Usage: see compose.yaml header or scripts/compose-dev.sh
services:
postgres:
ports:
- "127.0.0.1:5432:5432"
deploy:
resources:
limits:
memory: 512M
redis:
ports:
- "127.0.0.1:6379:6379"
deploy:
resources:
limits:
memory: 256M
rustfs:
environment:
RUSTFS_CONSOLE_ENABLE: "true"
ports:
- "127.0.0.1:9000:9000"
- "127.0.0.1:9001:9001"
deploy:
resources:
limits:
memory: 512M
backend:
environment:
DEV_MODE: ${DEV_MODE:-false}
SEED_CURRICULUM: ${SEED_CURRICULUM:-false}
deploy:
resources:
limits:
memory: 512M
frontend:
deploy:
resources:
limits:
memory: 512M
traefik:
# v3.6.1+ required for Docker Engine 29+ API negotiation
image: traefik@sha256:24841fe2de7304c149343d877d2923b4c8800a38ba015dea9174c23b20e344a0
restart: unless-stopped
security_opt:
- no-new-privileges:true
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=pargar_pargar
- --providers.file.directory=/etc/traefik/dynamic
- --providers.file.watch=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --entrypoints.web.http.redirections.entrypoint.permanent=true
- --entrypoints.web.http.aliasHeadersStrategy=delete
- --entrypoints.websecure.http.aliasHeadersStrategy=delete
# Allow slow, large uploads (admin video ≤ 200MB); default is 60s.
- --entrypoints.web.transport.respondingTimeouts.readTimeout=3600
- --entrypoints.websecure.transport.respondingTimeouts.readTimeout=3600
# Dev: Traefik default certificate (browser warning expected on localhost).
- --api.dashboard=true
- --api.insecure=true
- --log.level=INFO
- --accesslog=true
- --ping=true
- --global.checkNewVersion=false
ports:
- "80:80"
- "443:443"
# Dashboard only on loopback
- "127.0.0.1:8088:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ../traefik/dynamic:/etc/traefik/dynamic:ro
depends_on:
backend:
condition: service_healthy
frontend:
condition: service_healthy
healthcheck:
test: ["CMD", "traefik", "healthcheck", "--ping"]
interval: 10s
timeout: 3s
retries: 10
deploy:
resources:
limits:
memory: 256M
networks:
- pargar