name: citygen services: app: build: . init: true restart: unless-stopped ports: - "${CITYGEN_HOST_IP:-127.0.0.1}:${CITYGEN_PORT:-3000}:3000" environment: CITYGEN_BIND: 0.0.0.0:3000 CITYGEN_ADMIN_TOKEN: ${CITYGEN_ADMIN_TOKEN:-} CITYGEN_AGENTS: ${CITYGEN_AGENTS:-1000} CITYGEN_MAX_ROOMS: ${CITYGEN_MAX_ROOMS:-5} CITYGEN_SAVE_INTERVAL: ${CITYGEN_SAVE_INTERVAL:-60} CITYGEN_SAVE_QUOTA_BYTES: ${CITYGEN_SAVE_QUOTA_BYTES:-2147483648} CITYGEN_SIM_THREADS: ${CITYGEN_SIM_THREADS:-4} CITYGEN_MAX_GENERATION_KM2: ${CITYGEN_MAX_GENERATION_KM2:-25} CITYGEN_MAX_BUILDINGS: ${CITYGEN_MAX_BUILDINGS:-10000} CITYGEN_GENERATION_WORKERS: ${CITYGEN_GENERATION_WORKERS:-2} volumes: - cities:/app/public/cities - saves:/app/data stop_grace_period: 120s mem_limit: ${CITYGEN_MEMORY:-4g} cpus: ${CITYGEN_CPUS:-4} pids_limit: 256 security_opt: - no-new-privileges:true cap_drop: [ALL] logging: driver: json-file options: max-size: "10m" max-file: "3" prometheus: image: prom/prometheus:v3.15.1 profiles: [monitoring] restart: unless-stopped depends_on: app: condition: service_healthy command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.retention.time=7d - --storage.tsdb.retention.size=1GB ports: - "127.0.0.1:${CITYGEN_METRICS_PORT:-9090}:9090" volumes: - ./deploy/prometheus.yml:/etc/prometheus/prometheus.yml:ro - ./deploy/alerts.yml:/etc/prometheus/alerts.yml:ro - metrics:/prometheus mem_limit: 512m logging: driver: json-file options: max-size: "10m" max-file: "3" volumes: cities: saves: metrics: