refactor chat delivery to graphql + hatchet services

This commit is contained in:
Ruslan Bakiev
2026-03-08 18:55:58 +07:00
parent fe4bd59248
commit 7d1bed0d67
61 changed files with 5007 additions and 5004 deletions

34
hatchet/README.md Normal file
View File

@@ -0,0 +1,34 @@
# Hatchet (Dokploy)
Compose-стек для self-hosted Hatchet, перенесенный из соседнего проекта `gl` и адаптированный под ENV.
## Файлы
- `docker-compose.yml` — сервисы Hatchet (Postgres, RabbitMQ, migration, setup-config, engine, dashboard).
## Обязательные ENV (Dokploy UI)
- `HATCHET_POSTGRES_USER` (default: `hatchet`)
- `HATCHET_POSTGRES_PASSWORD` (default: `hatchet`)
- `HATCHET_POSTGRES_DB` (default: `hatchet`)
- `HATCHET_DATABASE_URL` (default: `postgres://hatchet:hatchet@postgres:5432/hatchet`)
- `HATCHET_RABBITMQ_USER` (default: `user`)
- `HATCHET_RABBITMQ_PASSWORD` (default: `password`)
- `HATCHET_RABBITMQ_URL` (default: `amqp://user:password@rabbitmq:5672/`)
- `HATCHET_SERVER_AUTH_COOKIE_DOMAIN` (например, `hatchet.<ваш-домен>`)
- `HATCHET_SERVER_AUTH_COOKIE_INSECURE` (`t`/`f`)
- `HATCHET_SERVER_GRPC_INSECURE` (`t`/`f`)
- `HATCHET_SERVER_GRPC_BROADCAST_ADDRESS` (например, `hatchet-engine:7070` внутри сети)
## ENV для приложений-воркеров (Node SDK)
- `HATCHET_CLIENT_TOKEN` — токен клиента из Hatchet.
- `HATCHET_CLIENT_TLS_STRATEGY` — для self-host без TLS: `none`.
- `HATCHET_CLIENT_HOST_PORT` — gRPC адрес (например, `hatchet-engine:7070` в одной Docker-сети).
- `HATCHET_CLIENT_API_URL` — URL API Hatchet dashboard/api.
## Развертывание
Сервис описан в `deploy-map.toml` как:
`hatchet = { deploy_mode = "dokploy_webhook", env_storage = "dokploy_ui", compose_path = "hatchet/docker-compose.yml" }`

121
hatchet/docker-compose.yml Normal file
View File

@@ -0,0 +1,121 @@
services:
postgres:
image: postgres:15.6
command: postgres -c "max_connections=1000"
restart: always
hostname: postgres
environment:
POSTGRES_USER: ${HATCHET_POSTGRES_USER:-hatchet}
POSTGRES_PASSWORD: ${HATCHET_POSTGRES_PASSWORD:-hatchet}
POSTGRES_DB: ${HATCHET_POSTGRES_DB:-hatchet}
expose:
- "5432"
volumes:
- hatchet_postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -d ${HATCHET_POSTGRES_DB:-hatchet} -U ${HATCHET_POSTGRES_USER:-hatchet}"]
interval: 10s
timeout: 10s
retries: 5
start_period: 10s
rabbitmq:
image: rabbitmq:3-management
hostname: rabbitmq
expose:
- "5672"
- "15672"
environment:
RABBITMQ_DEFAULT_USER: ${HATCHET_RABBITMQ_USER:-user}
RABBITMQ_DEFAULT_PASS: ${HATCHET_RABBITMQ_PASSWORD:-password}
volumes:
- hatchet_rabbitmq_data:/var/lib/rabbitmq
- hatchet_rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 10s
timeout: 10s
retries: 5
migration:
image: ghcr.io/hatchet-dev/hatchet/hatchet-migrate:latest
command: /hatchet/hatchet-migrate
environment:
DATABASE_URL: ${HATCHET_DATABASE_URL:-postgres://hatchet:hatchet@postgres:5432/hatchet}
depends_on:
postgres:
condition: service_healthy
setup-config:
image: ghcr.io/hatchet-dev/hatchet/hatchet-admin:latest
command: /hatchet/hatchet-admin quickstart --skip certs --generated-config-dir /hatchet/config --overwrite=false
environment:
DATABASE_URL: ${HATCHET_DATABASE_URL:-postgres://hatchet:hatchet@postgres:5432/hatchet}
SERVER_MSGQUEUE_RABBITMQ_URL: ${HATCHET_RABBITMQ_URL:-amqp://user:password@rabbitmq:5672/}
SERVER_AUTH_COOKIE_DOMAIN: ${HATCHET_SERVER_AUTH_COOKIE_DOMAIN:-hatchet.local}
SERVER_AUTH_COOKIE_INSECURE: ${HATCHET_SERVER_AUTH_COOKIE_INSECURE:-t}
SERVER_GRPC_BIND_ADDRESS: 0.0.0.0
SERVER_GRPC_INSECURE: ${HATCHET_SERVER_GRPC_INSECURE:-t}
SERVER_GRPC_BROADCAST_ADDRESS: ${HATCHET_SERVER_GRPC_BROADCAST_ADDRESS:-hatchet-engine:7070}
SERVER_DEFAULT_ENGINE_VERSION: V1
SERVER_INTERNAL_CLIENT_INTERNAL_GRPC_BROADCAST_ADDRESS: hatchet-engine:7070
volumes:
- hatchet_certs:/hatchet/certs
- hatchet_config:/hatchet/config
depends_on:
migration:
condition: service_completed_successfully
rabbitmq:
condition: service_healthy
postgres:
condition: service_healthy
hatchet-engine:
image: ghcr.io/hatchet-dev/hatchet/hatchet-engine:latest
command: /hatchet/hatchet-engine --config /hatchet/config
restart: on-failure
depends_on:
setup-config:
condition: service_completed_successfully
migration:
condition: service_completed_successfully
expose:
- "7070"
environment:
DATABASE_URL: ${HATCHET_DATABASE_URL:-postgres://hatchet:hatchet@postgres:5432/hatchet}
SERVER_GRPC_BIND_ADDRESS: 0.0.0.0
SERVER_GRPC_INSECURE: ${HATCHET_SERVER_GRPC_INSECURE:-t}
volumes:
- hatchet_certs:/hatchet/certs
- hatchet_config:/hatchet/config
networks:
- default
- dokploy-network
hatchet-dashboard:
image: ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:latest
command: sh ./entrypoint.sh --config /hatchet/config
expose:
- "80"
restart: on-failure
depends_on:
setup-config:
condition: service_completed_successfully
migration:
condition: service_completed_successfully
environment:
DATABASE_URL: ${HATCHET_DATABASE_URL:-postgres://hatchet:hatchet@postgres:5432/hatchet}
volumes:
- hatchet_certs:/hatchet/certs
- hatchet_config:/hatchet/config
networks:
dokploy-network:
external: true
volumes:
hatchet_postgres_data:
hatchet_rabbitmq_data:
hatchet_rabbitmq.conf:
hatchet_config:
hatchet_certs: