compose.prod.yaml
Rama main · réplica de lectura del repositorio original.
name: quoska
services:
app:
image: ${QUOSKA_IMAGE:-ghcr.io/oskarsync/quoska:latest}
init: true
restart: unless-stopped
env_file:
- ${QUOSKA_ENV_FILE:-.env.production}
environment:
NODE_ENV: production
HOSTNAME: 0.0.0.0
PORT: "3000"
NEXT_TELEMETRY_DISABLED: "1"
expose:
- "3000"
networks:
default:
aliases:
- quoska-app
read_only: true
tmpfs:
- /tmp:rw,nosuid,nodev,size=64m,mode=1777
volumes:
- next_cache:/app/.next/cache
- analytics_data:/app/data
security_opt:
- no-new-privileges:true
healthcheck:
test:
- CMD
- node
- -e
- fetch('http://127.0.0.1:3000/api/health').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))
interval: 30s
timeout: 5s
start_period: 20s
retries: 3
caddy:
image: caddy:2.10-alpine
restart: unless-stopped
environment:
QUOSKA_DOMAIN: ${QUOSKA_DOMAIN:?Set QUOSKA_DOMAIN in the shell or Compose environment}
depends_on:
app:
condition: service_healthy
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./deploy/Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
security_opt:
- no-new-privileges:true
volumes:
next_cache:
analytics_data:
caddy_data:
caddy_config: