165 lines
5.0 KiB
YAML
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:
|