Ctrl K
ComunidadGuías…

compose.prod.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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: