183 lines
4.4 KiB
YAML
183 lines
4.4 KiB
YAML
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:
|
||
traefik-net:
|
||
external: true # Traefik管理下のネットワーク
|
||
windmill-internal:
|
||
driver: bridge # Windmill内部通信用
|
||
|
||
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: ${POSTGRES_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: always
|
||
deploy:
|
||
replicas: 1
|
||
restart: unless-stopped
|
||
expose:
|
||
- 8000
|
||
- 2525
|
||
environment:
|
||
- DATABASE_URL=${DATABASE_URL}
|
||
- MODE=server
|
||
depends_on:
|
||
db:
|
||
condition: service_healthy
|
||
volumes:
|
||
- worker_logs:/tmp/windmill/logs
|
||
- /home/windmill/windmill:/workspace
|
||
labels:
|
||
# Traefik設定
|
||
- "traefik.enable=true"
|
||
# HTTPSルーター
|
||
- "traefik.http.routers.windmill.rule=Host(`windmill.keinafarm.net`)"
|
||
- "traefik.http.routers.windmill.entrypoints=websecure"
|
||
- "traefik.http.routers.windmill.tls=true"
|
||
- "traefik.http.routers.windmill.tls.certresolver=letsencrypt"
|
||
- "traefik.http.services.windmill.loadbalancer.server.port=8000"
|
||
# HTTPからHTTPSへのリダイレクト
|
||
- "traefik.http.routers.windmill-http.rule=Host(`windmill.keinafarm.net`)"
|
||
- "traefik.http.routers.windmill-http.entrypoints=web"
|
||
- "traefik.http.routers.windmill-http.middlewares=windmill-https-redirect"
|
||
- "traefik.http.middlewares.windmill-https-redirect.redirectscheme.scheme=https"
|
||
networks:
|
||
- traefik-net
|
||
- windmill-internal
|
||
logging: *default-logging
|
||
|
||
windmill_worker:
|
||
image: ${WM_IMAGE}
|
||
pull_policy: always
|
||
deploy:
|
||
replicas: 3
|
||
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
|
||
- /home/windmill/windmill:/workspace
|
||
networks:
|
||
- windmill-internal
|
||
logging: *default-logging
|
||
|
||
windmill_worker_native:
|
||
image: ${WM_IMAGE}
|
||
pull_policy: always
|
||
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_indexer:
|
||
image: ${WM_IMAGE}
|
||
pull_policy: always
|
||
deploy:
|
||
replicas: 0 # 必要に応じて1に変更
|
||
restart: unless-stopped
|
||
expose:
|
||
- 8002
|
||
environment:
|
||
- PORT=8002
|
||
- DATABASE_URL=${DATABASE_URL}
|
||
- MODE=indexer
|
||
depends_on:
|
||
db:
|
||
condition: service_healthy
|
||
volumes:
|
||
- windmill_index:/tmp/windmill/search
|
||
- worker_logs:/tmp/windmill/logs
|
||
networks:
|
||
- windmill-internal
|
||
logging: *default-logging
|
||
|
||
windmill_extra:
|
||
image: ghcr.io/windmill-labs/windmill-extra:latest
|
||
pull_policy: always
|
||
restart: unless-stopped
|
||
expose:
|
||
- 3001
|
||
- 3002
|
||
- 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は使わない(Traefikを使用)
|
||
# caddy:
|
||
# deploy:
|
||
# replicas: 0
|
||
|
||
volumes:
|
||
db_data: null
|
||
worker_dependency_cache: null
|
||
worker_logs: null
|
||
worker_memory: null
|
||
windmill_index: null
|
||
lsp_cache: null
|