version: "3.7" services: db: image: postgres:14 restart: unless-stopped volumes: - db_data:/var/lib/postgresql/data expose: - 5432 ports: - 5433:5432 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: windmill healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 windmill_server: image: ${WM_IMAGE} deploy: replicas: 1 restart: unless-stopped expose: - 8000 environment: - RUST_LOG=info ## You can set the number of workers to > 0 and not need any separate worker service - REQUEST_SIZE_LIMIT=500000000 - ZOMBIE_JOB_TIMEOUT=3000 - DATABASE_URL=${DATABASE_URL} - MODE=server depends_on: db: condition: service_healthy # volumes: # - ./oauth.json/:/usr/src/app/oauth.json windmill_worker: image: ${WM_IMAGE} deploy: replicas: 10 restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=default depends_on: db: condition: service_healthy # to mount the worker folder to debug,, KEEP_JOB_DIR=true and mount /tmp/windmill volumes: - worker_dependency_cache:/tmp/windmill/cache - custom_shared:/tmp/custom_shared ## This worker is specialized for "native" jobs. Native jobs run in-process and thus are much more lightweight than other jobs windmill_worker_backup: image: ${WM_IMAGE} deploy: replicas: 1 restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=dbbackup - WORKER_TAGS=dbbackup depends_on: db: condition: service_healthy # to mount the worker folder to debug,, KEEP_JOB_DIR=true and mount /tmp/windmill volumes: - worker_dependency_cache:/tmp/windmill/cache - custom_shared:/tmp/custom_shared - /opt/conf-bucket:/opt/conf-bucket # windmill_worker_qitech: # Use ghcr.io/windmill-labs/windmill-ee:main for the ee image: ${WM_IMAGE} pull_policy: always deploy: replicas: 7 restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=qitech - WORKER_TAGS=qitech depends_on: db: condition: service_healthy volumes: - worker_dependency_cache:/tmp/windmill/cache - custom_shared:/tmp/custom_shared windmill_worker_native: # Use ghcr.io/windmill-labs/windmill-ee:main for the ee image: ${WM_IMAGE} pull_policy: always deploy: replicas: 3 restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=native depends_on: db: condition: service_healthy volumes: - worker_dependency_cache:/tmp/windmill/cache - custom_shared:/tmp/custom_shared windmill_worker_gitsync: # Use ghcr.io/windmill-labs/windmill-ee:main for the ee image: ${WM_IMAGE} pull_policy: always deploy: replicas: 1 restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=gitsync - WORKER_TAGS=gitsync depends_on: db: condition: service_healthy volumes: - worker_dependency_cache:/tmp/windmill/cache - custom_shared:/tmp/custom_shared windmill_worker_libreoffice: # Use ghcr.io/windmill-labs/windmill-ee:main for the ee image: ${WM_IMAGE} pull_policy: always deploy: replicas: 1 restart: unless-stopped environment: - DATABASE_URL=${DATABASE_URL} - MODE=worker - WORKER_GROUP=libreoffice - WORKER_TAGS=libreoffice depends_on: db: condition: service_healthy volumes: - worker_dependency_cache:/tmp/windmill/cache - custom_shared:/tmp/custom_shared lsp: image: ghcr.io/windmill-labs/windmill-lsp:latest restart: unless-stopped expose: - 3001 # to mount the worker folder to debug, KEEP_JOB_DIR=true and mount /tmp/windmill volumes: # mount the docker socket to allow to run docker containers from within the workers - /var/run/docker.sock:/var/run/docker.sock - worker_dependency_cache:/tmp/windmill/cache - custom_shared:/tmp/custom_shared valkey: image: valkey/valkey:8.0.1 container_name: valkey_container restart: always # Remove the container when stopping (similar to --rm flag in docker run) deploy: restart_policy: condition: none volumes: db_data: null worker_dependency_cache: null custom_shared: null nc_data: {}