Files
compose-anything/src/windmill/docker-compose.yaml
2025-11-05 20:26:14 +08:00

165 lines
5.0 KiB
YAML

# Windmill - Developer Infrastructure Platform
# https://github.com/windmill-labs/windmill
#
# Windmill is an open-source developer platform and workflow engine that allows you to
# quickly build production-grade multi-step automations and internal apps from minimal
# scripts in Python, TypeScript, Go, Bash, SQL, or any Docker image.
#
# Key Features:
# - Write scripts in Python, TypeScript, Go, Bash, SQL
# - Auto-generated UIs from scripts
# - Visual workflow builder with code execution
# - Built-in scheduling and webhooks
# - Version control and audit logs
# - Multi-tenant workspaces
#
# Default Credentials:
# - Access UI at http://localhost:8000
# - Default email: admin@windmill.dev
# - Default password: changeme
#
# Security Notes:
# - Change default admin credentials immediately
# - Use strong database passwords
# - Enable SSL/TLS in production
# - Configure proper authentication (OAuth, SAML)
#
# License: AGPLv3 (https://github.com/windmill-labs/windmill/blob/main/LICENSE)
x-defaults: &defaults
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 100m
max-file: "3"
services:
windmill-server:
<<: *defaults
image: ghcr.io/windmill-labs/windmill:${WINDMILL_VERSION:-main}
container_name: windmill-server
ports:
- "${WINDMILL_PORT_OVERRIDE:-8000}:8000"
environment:
# Database configuration
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable
# Server configuration
- MODE=server
- BASE_URL=${WINDMILL_BASE_URL:-http://localhost:8000}
# Authentication
- SUPERADMIN_EMAIL=${WINDMILL_SUPERADMIN_EMAIL:-admin@windmill.dev}
- SUPERADMIN_PASSWORD=${WINDMILL_SUPERADMIN_PASSWORD:-changeme}
# Optional: License key for enterprise features
- LICENSE_KEY=${WINDMILL_LICENSE_KEY:-}
# Other settings
- TZ=${TZ:-UTC}
- RUST_LOG=${WINDMILL_LOG_LEVEL:-info}
volumes:
- windmill_server_data:/tmp/windmill
depends_on:
postgres:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8000/api/version"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
deploy:
resources:
limits:
cpus: "${WINDMILL_SERVER_CPU_LIMIT:-1.0}"
memory: "${WINDMILL_SERVER_MEMORY_LIMIT:-1G}"
reservations:
cpus: "${WINDMILL_SERVER_CPU_RESERVATION:-0.25}"
memory: "${WINDMILL_SERVER_MEMORY_RESERVATION:-256M}"
windmill-worker:
<<: *defaults
image: ghcr.io/windmill-labs/windmill:${WINDMILL_VERSION:-main}
container_name: windmill-worker
environment:
# Database configuration
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable
# Worker configuration
- MODE=worker
- WORKER_TAGS=${WINDMILL_WORKER_TAGS:-}
- NUM_WORKERS=${WINDMILL_NUM_WORKERS:-3}
# Other settings
- TZ=${TZ:-UTC}
- RUST_LOG=${WINDMILL_LOG_LEVEL:-info}
volumes:
- windmill_worker_data:/tmp/windmill
- /var/run/docker.sock:/var/run/docker.sock:ro # For Docker execution
depends_on:
postgres:
condition: service_healthy
windmill-server:
condition: service_healthy
deploy:
resources:
limits:
cpus: "${WINDMILL_WORKER_CPU_LIMIT:-2.0}"
memory: "${WINDMILL_WORKER_MEMORY_LIMIT:-2G}"
reservations:
cpus: "${WINDMILL_WORKER_CPU_RESERVATION:-0.5}"
memory: "${WINDMILL_WORKER_MEMORY_RESERVATION:-512M}"
postgres:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}postgres:${POSTGRES_VERSION:-16-alpine}
container_name: windmill-postgres
environment:
- POSTGRES_DB=${POSTGRES_DB:-windmill}
- POSTGRES_USER=${POSTGRES_USER:-windmill}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-changeme}
- POSTGRES_INITDB_ARGS=--encoding=UTF8
- TZ=${TZ:-UTC}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-windmill} -d ${POSTGRES_DB:-windmill}"]
interval: 10s
timeout: 5s
retries: 5
deploy:
resources:
limits:
cpus: "${POSTGRES_CPU_LIMIT:-1.0}"
memory: "${POSTGRES_MEMORY_LIMIT:-1G}"
reservations:
cpus: "${POSTGRES_CPU_RESERVATION:-0.25}"
memory: "${POSTGRES_MEMORY_RESERVATION:-256M}"
# Optional: LSP service for code intelligence
windmill-lsp:
<<: *defaults
image: ghcr.io/windmill-labs/windmill-lsp:${WINDMILL_LSP_VERSION:-latest}
container_name: windmill-lsp
profiles:
- dev
ports:
- "${WINDMILL_LSP_PORT:-3001}:3001"
deploy:
resources:
reservations:
cpus: "0.1"
memory: "128M"
limits:
cpus: "0.5"
memory: "512M"
volumes:
postgres_data:
windmill_server_data:
windmill_worker_data: