Files
SEEN/docker-compose.yml
T
2026-04-10 12:06:24 +02:00

141 lines
3.5 KiB
YAML

services:
seen-frontend:
build:
context: ./frontend
args:
VITE_ENABLE_MOCK_API: "false"
VITE_API_BASE_URL: ""
container_name: seen-frontend
ports:
- '8080:80'
depends_on:
seen-backend:
condition: service_healthy
deploy:
resources:
limits:
cpus: '1.0'
memory: 512M
reservations:
cpus: '0.25'
memory: 128M
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:80/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
seen-backend:
build:
context: ./backend
container_name: seen-backend
env_file:
- ./backend/.env.example
environment:
- SEEN_ENV=production
ports:
- '8081:8081'
depends_on:
postgres:
condition: service_healthy
dragonfly:
condition: service_healthy
deploy:
resources:
limits:
cpus: '2.0'
memory: 1G
reservations:
cpus: '0.5'
memory: 256M
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8081/api/v1/health/live"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
postgres:
image: postgres:16-alpine
container_name: seen-postgres
environment:
POSTGRES_DB: seen
POSTGRES_USER: seen
POSTGRES_PASSWORD: seen
volumes:
- seen_postgres_data:/var/lib/postgresql/data
- ./backend/migrations/000001_init_auth.up.sql:/docker-entrypoint-initdb.d/000001_init_auth.sql:ro
- ./backend/migrations/000002_init_catalog.up.sql:/docker-entrypoint-initdb.d/000002_init_catalog.sql:ro
- ./backend/migrations/000003_init_user_watch_later.up.sql:/docker-entrypoint-initdb.d/000003_init_user_watch_later.sql:ro
- ./backend/migrations/000004_init_user_progress.up.sql:/docker-entrypoint-initdb.d/000004_init_user_progress.sql:ro
- ./backend/migrations/000005_init_downloads.up.sql:/docker-entrypoint-initdb.d/000005_init_downloads.sql:ro
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U seen -d seen"]
interval: 5s
timeout: 5s
retries: 10
command:
- "postgres"
- "-c"
- "max_connections=100"
- "-c"
- "shared_buffers=256MB"
- "-c"
- "effective_cache_size=1GB"
- "-c"
- "maintenance_work_mem=64MB"
- "-c"
- "checkpoint_completion_target=0.9"
- "-c"
- "wal_buffers=16MB"
- "-c"
- "default_statistics_target=100"
- "-c"
- "random_page_cost=1.1"
- "-c"
- "effective_io_concurrency=200"
- "-c"
- "work_mem=2621kB"
- "-c"
- "min_wal_size=1GB"
- "-c"
- "max_wal_size=4GB"
dragonfly:
image: docker.dragonflydb.io/dragonflydb/dragonfly:latest
container_name: seen-dragonfly
command:
- "--logtostderr"
- "--proactor_threads=2"
- "--maxmemory=512mb"
deploy:
resources:
limits:
cpus: '1.0'
memory: 768M
reservations:
cpus: '0.25'
memory: 256M
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 10
volumes:
seen_postgres_data:
driver: local