version: "3.9" x-logging: &default-logging driver: "json-file" options: max-size: "${LOG_MAX_SIZE:-20m}" max-file: "${LOG_MAX_FILE:-10}" compress: "true" networks: windmill-internal: driver: bridge services: db: deploy: replicas: 1 image: postgres:16 shm_size: 1g restart: unless-stopped volumes: - db_data:/var/lib/postgresql/data expose: - 5432 environment: POSTGRES_PASSWORD: ${DATABASE_PASSWORD} POSTGRES_DB: windmill healthcheck: test: [ "CMD-SHELL", "pg_isready -U postgres" ] interval: 10s timeout: 5s retries: 5 logging: *default-logging networks: - windmill-internal windmill_server: image: ${WM_IMAGE} container_name: windmill_server pull_policy: if_not_present deploy: replicas: 1 restart: unless-stopped expose: - 8000 environment: - DATABASE_URL=${DATABASE_URL} - MODE=server - BASE_URL=http://localhost depends_on: db: condition: service_healthy volumes: - worker_logs:/tmp/windmill/logs networks: - windmill-internal logging: *default-logging windmill_worker: image: ${WM_IMAGE} pull_policy: if_not_present deploy: replicas: 1 resources: limits: cpus: "1" memory: 2048M restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=default depends_on: db: condition: service_healthy volumes: - /var/run/docker.sock:/var/run/docker.sock - worker_dependency_cache:/tmp/windmill/cache - worker_logs:/tmp/windmill/logs networks: - windmill-internal logging: *default-logging windmill_worker_native: image: ${WM_IMAGE} pull_policy: if_not_present deploy: replicas: 1 resources: limits: cpus: "1" memory: 2048M restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=native - NUM_WORKERS=8 - SLEEP_QUEUE=200 depends_on: db: condition: service_healthy volumes: - worker_logs:/tmp/windmill/logs networks: - windmill-internal logging: *default-logging windmill_extra: image: ghcr.io/windmill-labs/windmill-extra:${WM_VERSION} pull_policy: if_not_present restart: unless-stopped expose: - 3001 - 3003 environment: - ENABLE_LSP=true - ENABLE_MULTIPLAYER=false - ENABLE_DEBUGGER=true - DEBUGGER_PORT=3003 - ENABLE_NSJAIL=false - REQUIRE_SIGNED_DEBUG_REQUESTS=false - WINDMILL_BASE_URL=http://windmill_server:8000 volumes: - lsp_cache:/pyls/.cache networks: - windmill-internal logging: *default-logging caddy: image: caddy:2.9-alpine restart: unless-stopped ports: - "80:80" volumes: - ./Caddyfile.local:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config networks: - windmill-internal logging: *default-logging depends_on: - windmill_server - windmill_extra volumes: db_data: null worker_dependency_cache: null worker_logs: null lsp_cache: null caddy_data: null caddy_config: null