From eff0807a92be61e90cb33eaf85501a87694afc34 Mon Sep 17 00:00:00 2001 From: Sun-ZhenXing <1006925066@qq.com> Date: Mon, 3 Nov 2025 20:16:08 +0800 Subject: [PATCH] feat: add restate --- .compose-template.yaml | 4 +- .../instructions/Guidelines.instructions.md | 2 +- README.md | 2 + README.zh.md | 2 + mcp-servers/api-gateway/docker-compose.yaml | 4 +- .../arxiv-mcp-server/docker-compose.yaml | 4 +- mcp-servers/basic-memory/docker-compose.yaml | 4 +- mcp-servers/clickhouse/docker-compose.yaml | 4 +- mcp-servers/docker/docker-compose.yaml | 4 +- mcp-servers/dockerhub/docker-compose.yaml | 4 +- mcp-servers/e2b/docker-compose.yaml | 4 +- mcp-servers/elevenlabs/docker-compose.yaml | 4 +- mcp-servers/fetch/docker-compose.yaml | 4 +- mcp-servers/filesystem/docker-compose.yaml | 4 +- mcp-servers/firecrawl/docker-compose.yaml | 4 +- mcp-servers/grafana/docker-compose.yaml | 6 +- mcp-servers/markdownify/docker-compose.yaml | 4 +- mcp-servers/markitdown/docker-compose.yaml | 4 +- mcp-servers/memory/docker-compose.yaml | 4 +- mcp-servers/mongodb/docker-compose.yaml | 6 +- mcp-servers/neo4j-cypher/docker-compose.yaml | 4 +- mcp-servers/neo4j-memory/docker-compose.yaml | 4 +- mcp-servers/notion/docker-compose.yaml | 4 +- .../openapi-schema/docker-compose.yaml | 4 +- mcp-servers/openapi/docker-compose.yaml | 4 +- mcp-servers/openweather/docker-compose.yaml | 4 +- mcp-servers/paper-search/docker-compose.yaml | 4 +- mcp-servers/playwright/docker-compose.yaml | 4 +- mcp-servers/redis/docker-compose.yaml | 6 +- .../rust-mcp-filesystem/docker-compose.yaml | 4 +- .../sequentialthinking/docker-compose.yaml | 4 +- mcp-servers/sqlite/docker-compose.yaml | 4 +- mcp-servers/tavily/docker-compose.yaml | 4 +- .../text-to-graphql/docker-compose.yaml | 4 +- mcp-servers/time/docker-compose.yaml | 4 +- mcp-servers/wolfram-alpha/docker-compose.yaml | 4 +- .../youtube-transcript/docker-compose.yaml | 4 +- src/apache/docker-compose.yaml | 4 +- src/apisix/docker-compose.yaml | 8 +- src/bifrost-gateway/docker-compose.yaml | 4 +- src/bolt-diy/docker-compose.yaml | 4 +- src/budibase/docker-compose.yaml | 6 +- src/bytebot/docker-compose.yaml | 10 +- src/cassandra/docker-compose.yaml | 4 +- src/clash/docker-compose.yaml | 4 +- src/clickhouse/docker-compose.yaml | 4 +- src/conductor/docker-compose.yaml | 8 +- src/consul/docker-compose.yaml | 4 +- src/dify/docker-compose.yaml | 14 +- src/dnsmasq/docker-compose.yaml | 4 +- src/docker-registry/docker-compose.yaml | 4 +- src/dockge/docker-compose.yaml | 4 +- src/duckdb/docker-compose.yaml | 4 +- src/easy-dataset/docker-compose.yaml | 4 +- src/elasticsearch/docker-compose.yaml | 4 +- src/etcd/docker-compose.yaml | 4 +- src/firecrawl/docker-compose.yaml | 10 +- src/flink/docker-compose.yaml | 6 +- src/frpc/docker-compose.yaml | 4 +- src/frps/docker-compose.yaml | 4 +- src/gitea-runner/docker-compose.yaml | 4 +- src/gitea/docker-compose.yaml | 6 +- src/gitlab-runner/docker-compose.yaml | 4 +- src/gitlab/docker-compose.yaml | 4 +- src/gpustack/docker-compose.yaml | 4 +- src/grafana/docker-compose.yaml | 4 +- src/halo/docker-compose.yaml | 6 +- src/harbor/docker-compose.yaml | 16 +- src/hbase/docker-compose.yaml | 4 +- src/io-paint/docker-compose.yaml | 4 +- src/jenkins/docker-compose.yaml | 4 +- src/jodconverter/docker-compose.yaml | 4 +- src/kafka/docker-compose.yaml | 8 +- src/kestra/docker-compose.yaml | 6 +- src/kibana/docker-compose.yaml | 4 +- src/kodbox/docker-compose.yaml | 8 +- src/kong/docker-compose.yaml | 10 +- src/langflow/docker-compose.yaml | 6 +- src/langfuse/docker-compose.yaml | 6 +- src/libreoffice/docker-compose.yaml | 4 +- src/litellm/docker-compose.yaml | 8 +- src/logstash/docker-compose.yaml | 4 +- src/mariadb-galera/docker-compose.yaml | 4 +- .../docker-compose.yaml | 6 +- src/milvus-standalone/docker-compose.yaml | 10 +- .../docker-compose.yaml | 4 +- src/mineru-sgalng/docker-compose.yaml | 4 +- src/mineru-vllm/docker-compose.yaml | 4 +- src/minio/docker-compose.yaml | 4 +- src/mlflow/docker-compose.yaml | 10 +- .../docker-compose.yaml | 6 +- src/mongodb-replicaset/docker-compose.yaml | 6 +- src/mongodb-standalone/docker-compose.yaml | 4 +- src/mysql/docker-compose.yaml | 4 +- src/n8n/docker-compose.yaml | 6 +- src/nacos/docker-compose.yaml | 4 +- src/nebulagraph/docker-compose.yaml | 8 +- src/neo4j/docker-compose.yaml | 4 +- src/nginx/docker-compose.yaml | 4 +- src/node-exporter/docker-compose.yaml | 4 +- src/oceanbase/docker-compose.yaml | 4 +- src/odoo/docker-compose.yaml | 6 +- src/ollama/docker-compose.yaml | 4 +- src/open-webui/docker-compose.yaml | 4 +- src/opencoze/docker-compose.yaml | 2 +- src/opencut/docker-compose.yaml | 10 +- src/openlist/docker-compose.yaml | 4 +- src/opensearch/docker-compose.yaml | 6 +- src/pocketbase/docker-compose.yaml | 4 +- src/portainer/docker-compose.yaml | 4 +- src/portkey-gateway/docker-compose.yaml | 4 +- src/postgres/docker-compose.yaml | 4 +- src/prometheus/docker-compose.yaml | 4 +- src/pytorch/docker-compose.yaml | 4 +- src/qdrant/docker-compose.yaml | 4 +- src/rabbitmq/docker-compose.yaml | 4 +- src/ray/README.md | 2 +- src/ray/README.zh.md | 2 +- src/ray/docker-compose.yaml | 8 +- src/redis-cluster/docker-compose.yaml | 14 +- src/redis/docker-compose.yaml | 4 +- src/restate-cluster/.env.example | 49 +++ src/restate-cluster/README.md | 280 ++++++++++++++++++ src/restate-cluster/README.zh.md | 280 ++++++++++++++++++ src/restate-cluster/docker-compose.yaml | 144 +++++++++ src/restate/.env.example | 13 + src/restate/README.md | 122 ++++++++ src/restate/README.zh.md | 122 ++++++++ src/restate/docker-compose.yaml | 43 +++ src/rocketmq/docker-compose.yaml | 8 +- src/searxng/docker-compose.yaml | 8 +- .../docker-compose.yaml | 4 +- src/stirling-pdf/docker-compose.yaml | 4 +- src/temporal/docker-compose.yaml | 10 +- src/tidb/docker-compose.yaml | 8 +- src/tikv/docker-compose.yaml | 6 +- src/valkey-cluster/docker-compose.yaml | 6 +- src/valkey/docker-compose.yaml | 4 +- src/verdaccio/docker-compose.yaml | 4 +- src/vllm/docker-compose.yaml | 4 +- src/windmill/docker-compose.yaml | 10 +- src/zookeeper/docker-compose.yaml | 4 +- 142 files changed, 1395 insertions(+), 338 deletions(-) create mode 100644 src/restate-cluster/.env.example create mode 100644 src/restate-cluster/README.md create mode 100644 src/restate-cluster/README.zh.md create mode 100644 src/restate-cluster/docker-compose.yaml create mode 100644 src/restate/.env.example create mode 100644 src/restate/README.md create mode 100644 src/restate/README.zh.md create mode 100644 src/restate/docker-compose.yaml diff --git a/.compose-template.yaml b/.compose-template.yaml index 9f8d91c..0f3bdcb 100644 --- a/.compose-template.yaml +++ b/.compose-template.yaml @@ -2,7 +2,7 @@ # This template provides a standardized structure for all services # Copy this template when creating new services -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -13,7 +13,7 @@ x-default: &default #! Example service structure: services: service-name: - <<: *default + <<: *defaults image: image:${VERSION:-latest} ports: - "${PORT_OVERRIDE:-8080}:8080" diff --git a/.github/instructions/Guidelines.instructions.md b/.github/instructions/Guidelines.instructions.md index 06b5352..08ef5a7 100644 --- a/.github/instructions/Guidelines.instructions.md +++ b/.github/instructions/Guidelines.instructions.md @@ -47,7 +47,7 @@ Compose Anything helps users quickly deploy various services by providing a set - Keep docs LLM-friendly; - List primary env vars and default ports in the README, and link to `README.md` / `README.zh.md`. -Reference template: `.compose-template.yaml` in the repo root. +Reference template: [`compose-template.yaml`](../../.compose-template.yaml) in the repo root. If you want to find image tags, try fetch url like `https://hub.docker.com/v2/repositories/library/nginx/tags?page_size=1&ordering=last_updated`. diff --git a/README.md b/README.md index e372007..c01446d 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,8 @@ Compose Anything helps users quickly deploy various services by providing a set | [RabbitMQ](./src/rabbitmq) | 4.1.4 | | [Redis Cluster](./src/redis-cluster) | 8.2.1 | | [Redis](./src/redis) | 8.2.1 | +| [Restate Cluster](./src/restate-cluster) | 1.5.3 | +| [Restate](./src/restate) | 1.5.3 | | [SearXNG](./src/searxng) | 2025.1.20-1ce14ef99 | | [Verdaccio](./src/verdaccio) | 6.1.2 | | [vLLM](./src/vllm) | v0.8.0 | diff --git a/README.zh.md b/README.zh.md index 8b9106a..0fa6d55 100644 --- a/README.zh.md +++ b/README.zh.md @@ -68,6 +68,8 @@ Compose Anything 通过提供一组高质量的 Docker Compose 配置文件, | [RabbitMQ](./src/rabbitmq) | 4.1.4 | | [Redis Cluster](./src/redis-cluster) | 8.2.1 | | [Redis](./src/redis) | 8.2.1 | +| [Restate Cluster](./src/restate-cluster) | 1.5.3 | +| [Restate](./src/restate) | 1.5.3 | | [SearXNG](./src/searxng) | 2025.1.20-1ce14ef99 | | [Verdaccio](./src/verdaccio) | 6.1.2 | | [vLLM](./src/vllm) | v0.8.0 | diff --git a/mcp-servers/api-gateway/docker-compose.yaml b/mcp-servers/api-gateway/docker-compose.yaml index ba3a982..6ac85be 100644 --- a/mcp-servers/api-gateway/docker-compose.yaml +++ b/mcp-servers/api-gateway/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-api-gateway: - <<: *default + <<: *defaults image: mcp/api-gateway:${MCP_API_GATEWAY_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/arxiv-mcp-server/docker-compose.yaml b/mcp-servers/arxiv-mcp-server/docker-compose.yaml index ac35c23..472f0cd 100644 --- a/mcp-servers/arxiv-mcp-server/docker-compose.yaml +++ b/mcp-servers/arxiv-mcp-server/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-arxiv: - <<: *default + <<: *defaults image: mcp/arxiv-mcp-server:${MCP_ARXIV_VERSION:-latest} environment: - ARXIV_STORAGE_PATH=${ARXIV_STORAGE_PATH:-/data/papers} diff --git a/mcp-servers/basic-memory/docker-compose.yaml b/mcp-servers/basic-memory/docker-compose.yaml index 8b2d73e..e88bad7 100644 --- a/mcp-servers/basic-memory/docker-compose.yaml +++ b/mcp-servers/basic-memory/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-basic-memory: - <<: *default + <<: *defaults image: mcp/basic-memory:${MCP_BASIC_MEMORY_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/clickhouse/docker-compose.yaml b/mcp-servers/clickhouse/docker-compose.yaml index f491fbd..749a19f 100644 --- a/mcp-servers/clickhouse/docker-compose.yaml +++ b/mcp-servers/clickhouse/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-clickhouse: - <<: *default + <<: *defaults image: mcp/clickhouse:${MCP_CLICKHOUSE_VERSION:-latest} environment: - CLICKHOUSE_URL=${CLICKHOUSE_URL:-http://localhost:8123} diff --git a/mcp-servers/docker/docker-compose.yaml b/mcp-servers/docker/docker-compose.yaml index 786b356..a7e9c87 100644 --- a/mcp-servers/docker/docker-compose.yaml +++ b/mcp-servers/docker/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-docker: - <<: *default + <<: *defaults image: mcp/docker:${MCP_DOCKER_VERSION:-latest} environment: - DOCKER_HOST=${DOCKER_HOST:-unix:///var/run/docker.sock} diff --git a/mcp-servers/dockerhub/docker-compose.yaml b/mcp-servers/dockerhub/docker-compose.yaml index 25d3e72..e5ba60e 100644 --- a/mcp-servers/dockerhub/docker-compose.yaml +++ b/mcp-servers/dockerhub/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: dockerhub: - <<: *default + <<: *defaults image: mcp/dockerhub:${DOCKERHUB_MCP_VERSION:-latest} environment: - DOCKERHUB_USERNAME=${DOCKERHUB_USERNAME} diff --git a/mcp-servers/e2b/docker-compose.yaml b/mcp-servers/e2b/docker-compose.yaml index fad799b..6cd5b11 100644 --- a/mcp-servers/e2b/docker-compose.yaml +++ b/mcp-servers/e2b/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-e2b: - <<: *default + <<: *defaults image: mcp/e2b:${MCP_E2B_VERSION:-latest} environment: - E2B_API_KEY=${E2B_API_KEY} diff --git a/mcp-servers/elevenlabs/docker-compose.yaml b/mcp-servers/elevenlabs/docker-compose.yaml index e87e055..203aad7 100644 --- a/mcp-servers/elevenlabs/docker-compose.yaml +++ b/mcp-servers/elevenlabs/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -16,7 +16,7 @@ x-default: &default services: mcp-elevenlabs: - <<: *default + <<: *defaults image: mcp/elevenlabs:${MCP_ELEVENLABS_VERSION:-latest} container_name: mcp-elevenlabs environment: diff --git a/mcp-servers/fetch/docker-compose.yaml b/mcp-servers/fetch/docker-compose.yaml index a793a42..38e9626 100644 --- a/mcp-servers/fetch/docker-compose.yaml +++ b/mcp-servers/fetch/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-fetch: - <<: *default + <<: *defaults image: mcp/fetch:${MCP_FETCH_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/filesystem/docker-compose.yaml b/mcp-servers/filesystem/docker-compose.yaml index e4299d8..3810e93 100644 --- a/mcp-servers/filesystem/docker-compose.yaml +++ b/mcp-servers/filesystem/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-filesystem: - <<: *default + <<: *defaults image: mcp/filesystem:${MCP_FILESYSTEM_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/firecrawl/docker-compose.yaml b/mcp-servers/firecrawl/docker-compose.yaml index 2e549db..73f0986 100644 --- a/mcp-servers/firecrawl/docker-compose.yaml +++ b/mcp-servers/firecrawl/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -16,7 +16,7 @@ x-default: &default services: mcp-firecrawl: - <<: *default + <<: *defaults image: mcp/firecrawl:${MCP_FIRECRAWL_VERSION:-latest} container_name: mcp-firecrawl environment: diff --git a/mcp-servers/grafana/docker-compose.yaml b/mcp-servers/grafana/docker-compose.yaml index 335c71b..81fb20c 100644 --- a/mcp-servers/grafana/docker-compose.yaml +++ b/mcp-servers/grafana/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-grafana: - <<: *default + <<: *defaults image: mcp/grafana:${MCP_GRAFANA_VERSION:-latest} environment: - GRAFANA_URL=${GRAFANA_URL:-http://grafana:3000} @@ -36,7 +36,7 @@ services: memory: 128M grafana: - <<: *default + <<: *defaults image: grafana/grafana:${GRAFANA_VERSION:-latest} environment: - GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin} diff --git a/mcp-servers/markdownify/docker-compose.yaml b/mcp-servers/markdownify/docker-compose.yaml index 0b811fd..303b642 100644 --- a/mcp-servers/markdownify/docker-compose.yaml +++ b/mcp-servers/markdownify/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-markdownify: - <<: *default + <<: *defaults image: mcp/markdownify:${MCP_MARKDOWNIFY_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/markitdown/docker-compose.yaml b/mcp-servers/markitdown/docker-compose.yaml index 94c4507..0ff7308 100644 --- a/mcp-servers/markitdown/docker-compose.yaml +++ b/mcp-servers/markitdown/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-markitdown: - <<: *default + <<: *defaults image: mcp/markitdown:${MCP_MARKITDOWN_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/memory/docker-compose.yaml b/mcp-servers/memory/docker-compose.yaml index 411e8b4..2a32e8d 100644 --- a/mcp-servers/memory/docker-compose.yaml +++ b/mcp-servers/memory/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-memory: - <<: *default + <<: *defaults image: mcp/memory:${MCP_MEMORY_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/mongodb/docker-compose.yaml b/mcp-servers/mongodb/docker-compose.yaml index 1d819bd..194a51c 100644 --- a/mcp-servers/mongodb/docker-compose.yaml +++ b/mcp-servers/mongodb/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-mongodb: - <<: *default + <<: *defaults image: mcp/mongodb:${MCP_MONGODB_VERSION:-latest} environment: - MONGODB_URI=${MONGODB_URI:-mongodb://mongodb:27017} @@ -36,7 +36,7 @@ services: memory: 128M mongodb: - <<: *default + <<: *defaults image: mongo:${MONGODB_VERSION:-7} environment: - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USERNAME:-admin} diff --git a/mcp-servers/neo4j-cypher/docker-compose.yaml b/mcp-servers/neo4j-cypher/docker-compose.yaml index d80c8cb..fecc845 100644 --- a/mcp-servers/neo4j-cypher/docker-compose.yaml +++ b/mcp-servers/neo4j-cypher/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-neo4j-cypher: - <<: *default + <<: *defaults image: mcp/neo4j-cypher:${MCP_NEO4J_CYPHER_VERSION:-latest} environment: - NEO4J_URL=${NEO4J_URL:-bolt://localhost:7687} diff --git a/mcp-servers/neo4j-memory/docker-compose.yaml b/mcp-servers/neo4j-memory/docker-compose.yaml index 981a3d7..b4e862f 100644 --- a/mcp-servers/neo4j-memory/docker-compose.yaml +++ b/mcp-servers/neo4j-memory/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-neo4j-memory: - <<: *default + <<: *defaults image: mcp/neo4j-memory:${MCP_NEO4J_MEMORY_VERSION:-latest} environment: - NEO4J_URL=${NEO4J_URL:-bolt://localhost:7687} diff --git a/mcp-servers/notion/docker-compose.yaml b/mcp-servers/notion/docker-compose.yaml index adddc7c..d6bf77c 100644 --- a/mcp-servers/notion/docker-compose.yaml +++ b/mcp-servers/notion/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-notion: - <<: *default + <<: *defaults image: mcp/notion:${MCP_NOTION_VERSION:-latest} environment: - INTERNAL_INTEGRATION_TOKEN=${INTERNAL_INTEGRATION_TOKEN} diff --git a/mcp-servers/openapi-schema/docker-compose.yaml b/mcp-servers/openapi-schema/docker-compose.yaml index 6ee017a..9afac6d 100644 --- a/mcp-servers/openapi-schema/docker-compose.yaml +++ b/mcp-servers/openapi-schema/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-openapi-schema: - <<: *default + <<: *defaults image: mcp/openapi-schema:${MCP_OPENAPI_SCHEMA_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/openapi/docker-compose.yaml b/mcp-servers/openapi/docker-compose.yaml index 085b419..1604ef9 100644 --- a/mcp-servers/openapi/docker-compose.yaml +++ b/mcp-servers/openapi/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-openapi: - <<: *default + <<: *defaults image: mcp/openapi:${MCP_OPENAPI_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/openweather/docker-compose.yaml b/mcp-servers/openweather/docker-compose.yaml index bddd3d8..effaff2 100644 --- a/mcp-servers/openweather/docker-compose.yaml +++ b/mcp-servers/openweather/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-openweather: - <<: *default + <<: *defaults image: mcp/openweather:${MCP_OPENWEATHER_VERSION:-latest} environment: - OPENWEATHER_API_KEY=${OPENWEATHER_API_KEY} diff --git a/mcp-servers/paper-search/docker-compose.yaml b/mcp-servers/paper-search/docker-compose.yaml index ac57e97..44984ec 100644 --- a/mcp-servers/paper-search/docker-compose.yaml +++ b/mcp-servers/paper-search/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-paper-search: - <<: *default + <<: *defaults image: mcp/paper-search:${MCP_PAPER_SEARCH_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/playwright/docker-compose.yaml b/mcp-servers/playwright/docker-compose.yaml index af4a5c0..6e204b5 100644 --- a/mcp-servers/playwright/docker-compose.yaml +++ b/mcp-servers/playwright/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: playwright: - <<: *default + <<: *defaults image: mcp/playwright:${PLAYWRIGHT_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/redis/docker-compose.yaml b/mcp-servers/redis/docker-compose.yaml index bc13efb..447efca 100644 --- a/mcp-servers/redis/docker-compose.yaml +++ b/mcp-servers/redis/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp: - <<: *default + <<: *defaults image: mcp/redis:${MCP_REDIS_VERSION:-latest} environment: - REDIS_HOST=redis @@ -36,7 +36,7 @@ services: memory: 128M redis: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-7-alpine} command: redis-server --appendonly yes ports: diff --git a/mcp-servers/rust-mcp-filesystem/docker-compose.yaml b/mcp-servers/rust-mcp-filesystem/docker-compose.yaml index 379d9f7..23e93e8 100644 --- a/mcp-servers/rust-mcp-filesystem/docker-compose.yaml +++ b/mcp-servers/rust-mcp-filesystem/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: rust-mcp-filesystem: - <<: *default + <<: *defaults image: mcp/rust-mcp-filesystem:${RUST_MCP_FILESYSTEM_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/sequentialthinking/docker-compose.yaml b/mcp-servers/sequentialthinking/docker-compose.yaml index 896fdc7..f2ccd38 100644 --- a/mcp-servers/sequentialthinking/docker-compose.yaml +++ b/mcp-servers/sequentialthinking/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-sequentialthinking: - <<: *default + <<: *defaults image: mcp/sequentialthinking:${MCP_SEQUENTIALTHINKING_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/sqlite/docker-compose.yaml b/mcp-servers/sqlite/docker-compose.yaml index ec06366..8439f98 100644 --- a/mcp-servers/sqlite/docker-compose.yaml +++ b/mcp-servers/sqlite/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-sqlite: - <<: *default + <<: *defaults image: mcp/sqlite:${MCP_SQLITE_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/tavily/docker-compose.yaml b/mcp-servers/tavily/docker-compose.yaml index bfe8297..8cc398c 100644 --- a/mcp-servers/tavily/docker-compose.yaml +++ b/mcp-servers/tavily/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: tavily: - <<: *default + <<: *defaults image: mcp/tavily:${TAVILY_VERSION:-latest} environment: - TAVILY_API_KEY=${TAVILY_API_KEY} diff --git a/mcp-servers/text-to-graphql/docker-compose.yaml b/mcp-servers/text-to-graphql/docker-compose.yaml index e9167cf..4fbdefa 100644 --- a/mcp-servers/text-to-graphql/docker-compose.yaml +++ b/mcp-servers/text-to-graphql/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-text-to-graphql: - <<: *default + <<: *defaults image: mcp/text-to-graphql:${MCP_TEXT_TO_GRAPHQL_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/time/docker-compose.yaml b/mcp-servers/time/docker-compose.yaml index 4f284d6..30f19ab 100644 --- a/mcp-servers/time/docker-compose.yaml +++ b/mcp-servers/time/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-time: - <<: *default + <<: *defaults image: mcp/time:${MCP_TIME_VERSION:-latest} environment: - MCP_HOST=0.0.0.0 diff --git a/mcp-servers/wolfram-alpha/docker-compose.yaml b/mcp-servers/wolfram-alpha/docker-compose.yaml index 9b3b929..4e07736 100644 --- a/mcp-servers/wolfram-alpha/docker-compose.yaml +++ b/mcp-servers/wolfram-alpha/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mcp-wolfram-alpha: - <<: *default + <<: *defaults image: mcp/wolfram-alpha:${MCP_WOLFRAM_ALPHA_VERSION:-latest} environment: - WOLFRAM_ALPHA_APPID=${WOLFRAM_ALPHA_APPID} diff --git a/mcp-servers/youtube-transcript/docker-compose.yaml b/mcp-servers/youtube-transcript/docker-compose.yaml index 6b40eab..ffc2f79 100644 --- a/mcp-servers/youtube-transcript/docker-compose.yaml +++ b/mcp-servers/youtube-transcript/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -16,7 +16,7 @@ x-default: &default services: mcp-youtube-transcript: - <<: *default + <<: *defaults image: mcp/youtube-transcript:${MCP_YOUTUBE_TRANSCRIPT_VERSION:-latest} container_name: mcp-youtube-transcript environment: diff --git a/src/apache/docker-compose.yaml b/src/apache/docker-compose.yaml index f98362f..2d62cc0 100644 --- a/src/apache/docker-compose.yaml +++ b/src/apache/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: apache: - <<: *default + <<: *defaults image: httpd:${APACHE_VERSION:-2.4.62-alpine3.20} ports: - "${APACHE_HTTP_PORT_OVERRIDE:-80}:80" diff --git a/src/apisix/docker-compose.yaml b/src/apisix/docker-compose.yaml index 2fbbcfa..d15c1d6 100644 --- a/src/apisix/docker-compose.yaml +++ b/src/apisix/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: apisix: - <<: *default + <<: *defaults image: apache/apisix:${APISIX_VERSION:-3.13.0-debian} ports: - "${APISIX_HTTP_PORT_OVERRIDE:-9080}:9080" @@ -42,7 +42,7 @@ services: start_period: 10s etcd: - <<: *default + <<: *defaults image: quay.io/coreos/etcd:${ETCD_VERSION:-v3.6.0} ports: - "${ETCD_CLIENT_PORT_OVERRIDE:-2379}:2379" @@ -97,7 +97,7 @@ services: # Optional: APISIX Dashboard apisix-dashboard: - <<: *default + <<: *defaults image: apache/apisix-dashboard:${APISIX_DASHBOARD_VERSION:-3.0.1-alpine} ports: - "${APISIX_DASHBOARD_PORT_OVERRIDE:-9000}:9000" diff --git a/src/bifrost-gateway/docker-compose.yaml b/src/bifrost-gateway/docker-compose.yaml index f914eb8..1215b07 100644 --- a/src/bifrost-gateway/docker-compose.yaml +++ b/src/bifrost-gateway/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: bifrost: - <<: *default + <<: *defaults image: maximhq/bifrost:${BIFROST_VERSION:-v1.2.15} volumes: - bifrost_data:/app/data diff --git a/src/bolt-diy/docker-compose.yaml b/src/bolt-diy/docker-compose.yaml index b447c97..e32f026 100644 --- a/src/bolt-diy/docker-compose.yaml +++ b/src/bolt-diy/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: bolt-diy: - <<: *default + <<: *defaults image: stackblitz/bolt:${BOLT_DIY_VERSION:-latest} ports: - "${BOLT_DIY_PORT_OVERRIDE:-5173}:5173" diff --git a/src/budibase/docker-compose.yaml b/src/budibase/docker-compose.yaml index 70ca92e..a083e6b 100644 --- a/src/budibase/docker-compose.yaml +++ b/src/budibase/docker-compose.yaml @@ -25,7 +25,7 @@ # # License: GPL-3.0 (https://github.com/Budibase/budibase/blob/master/LICENSE) -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -35,7 +35,7 @@ x-default: &default services: budibase: - <<: *default + <<: *defaults image: budibase/budibase:${BUDIBASE_VERSION:-3.23.0} container_name: budibase ports: @@ -89,7 +89,7 @@ services: memory: "${BUDIBASE_MEMORY_RESERVATION:-512M}" redis: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-7-alpine} container_name: budibase-redis command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru diff --git a/src/bytebot/docker-compose.yaml b/src/bytebot/docker-compose.yaml index 5673315..d7a01b7 100644 --- a/src/bytebot/docker-compose.yaml +++ b/src/bytebot/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: bytebot-desktop: - <<: *default + <<: *defaults image: ghcr.io/bytebot-ai/bytebot-desktop:${BYTEBOT_VERSION:-edge} ports: - "${BYTEBOT_DESKTOP_PORT_OVERRIDE:-9990}:9990" @@ -31,7 +31,7 @@ services: start_period: 30s bytebot-agent: - <<: *default + <<: *defaults image: ghcr.io/bytebot-ai/bytebot-agent:${BYTEBOT_VERSION:-edge} depends_on: bytebot-desktop: @@ -63,7 +63,7 @@ services: start_period: 30s bytebot-ui: - <<: *default + <<: *defaults image: ghcr.io/bytebot-ai/bytebot-ui:${BYTEBOT_VERSION:-edge} depends_on: bytebot-agent: @@ -84,7 +84,7 @@ services: memory: 256M bytebot-db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17-alpine} environment: - TZ=${TZ:-UTC} diff --git a/src/cassandra/docker-compose.yaml b/src/cassandra/docker-compose.yaml index 916e16a..badc81c 100644 --- a/src/cassandra/docker-compose.yaml +++ b/src/cassandra/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: cassandra: - <<: *default + <<: *defaults image: cassandra:${CASSANDRA_VERSION:-5.0.2} ports: - "${CASSANDRA_CQL_PORT_OVERRIDE:-9042}:9042" diff --git a/src/clash/docker-compose.yaml b/src/clash/docker-compose.yaml index 0c0c90c..424f5da 100644 --- a/src/clash/docker-compose.yaml +++ b/src/clash/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: clash: - <<: *default + <<: *defaults image: centralx/clash:${CLASH_VERSION:-1.18.0} ports: - "7880:80" diff --git a/src/clickhouse/docker-compose.yaml b/src/clickhouse/docker-compose.yaml index 4b80a32..f40fdb0 100644 --- a/src/clickhouse/docker-compose.yaml +++ b/src/clickhouse/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: clickhouse: - <<: *default + <<: *defaults image: clickhouse/clickhouse-server:${CLICKHOUSE_VERSION:-24.11.1.2557} hostname: clickhouse environment: diff --git a/src/conductor/docker-compose.yaml b/src/conductor/docker-compose.yaml index 73b9adf..ada6e02 100644 --- a/src/conductor/docker-compose.yaml +++ b/src/conductor/docker-compose.yaml @@ -23,7 +23,7 @@ # # License: Apache-2.0 (https://github.com/conductor-oss/conductor/blob/main/LICENSE) -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -33,7 +33,7 @@ x-default: &default services: conductor-server: - <<: *default + <<: *defaults image: conductor:server build: context: https://github.com/conductor-oss/conductor.git#main:docker/server @@ -81,7 +81,7 @@ services: memory: "${CONDUCTOR_MEMORY_RESERVATION:-512M}" postgres: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-16-alpine} container_name: conductor-postgres environment: @@ -107,7 +107,7 @@ services: memory: "${POSTGRES_MEMORY_RESERVATION:-256M}" elasticsearch: - <<: *default + <<: *defaults image: elasticsearch:${ELASTICSEARCH_VERSION:-8.11.0} container_name: conductor-elasticsearch environment: diff --git a/src/consul/docker-compose.yaml b/src/consul/docker-compose.yaml index 5b1a502..2ca45ab 100644 --- a/src/consul/docker-compose.yaml +++ b/src/consul/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: consul: - <<: *default + <<: *defaults image: consul:${CONSUL_VERSION:-1.20.3} ports: - "${CONSUL_HTTP_PORT_OVERRIDE:-8500}:8500" diff --git a/src/dify/docker-compose.yaml b/src/dify/docker-compose.yaml index e6c3ed8..31712be 100644 --- a/src/dify/docker-compose.yaml +++ b/src/dify/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: dify-api: - <<: *default + <<: *defaults image: langgenius/dify-api:${DIFY_VERSION:-0.18.2} depends_on: dify-db: @@ -47,7 +47,7 @@ services: start_period: 30s dify-worker: - <<: *default + <<: *defaults image: langgenius/dify-api:${DIFY_VERSION:-0.18.2} depends_on: dify-db: @@ -80,7 +80,7 @@ services: memory: 1G dify-web: - <<: *default + <<: *defaults image: langgenius/dify-web:${DIFY_VERSION:-0.18.2} depends_on: dify-api: @@ -101,7 +101,7 @@ services: memory: 256M dify-db: - <<: *default + <<: *defaults image: postgres:15-alpine environment: - TZ=${TZ:-UTC} @@ -127,7 +127,7 @@ services: start_period: 30s dify-redis: - <<: *default + <<: *defaults image: redis:7-alpine command: redis-server --requirepass ${REDIS_PASSWORD:-} environment: @@ -150,7 +150,7 @@ services: start_period: 5s dify-weaviate: - <<: *default + <<: *defaults image: semitechnologies/weaviate:${WEAVIATE_VERSION:-1.28.12} profiles: - weaviate diff --git a/src/dnsmasq/docker-compose.yaml b/src/dnsmasq/docker-compose.yaml index ae2fc82..a95698c 100644 --- a/src/dnsmasq/docker-compose.yaml +++ b/src/dnsmasq/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: dnsmasq: - <<: *default + <<: *defaults image: dockurr/dnsmasq:${DNSMASQ_VERSION:-2.91} volumes: - ./dnsmasq.conf:/etc/dnsmasq.conf:ro diff --git a/src/docker-registry/docker-compose.yaml b/src/docker-registry/docker-compose.yaml index b7bb53c..f56fd6a 100644 --- a/src/docker-registry/docker-compose.yaml +++ b/src/docker-registry/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: registry: - <<: *default + <<: *defaults image: registry:${REGISTRY_VERSION:-3.0.0} volumes: - ./certs:/certs:ro diff --git a/src/dockge/docker-compose.yaml b/src/dockge/docker-compose.yaml index 181739d..d707e5a 100644 --- a/src/dockge/docker-compose.yaml +++ b/src/dockge/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: dockge: - <<: *default + <<: *defaults image: louislam/dockge:${DOCKGE_VERSION:-1} ports: - "${PORT_OVERRIDE:-5001}:5001" diff --git a/src/duckdb/docker-compose.yaml b/src/duckdb/docker-compose.yaml index ee6fdf5..eb6e86a 100644 --- a/src/duckdb/docker-compose.yaml +++ b/src/duckdb/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: duckdb: - <<: *default + <<: *defaults image: davidgasquez/duckdb:${DUCKDB_VERSION:-v1.1.3} command: ["duckdb", "/data/duckdb.db"] stdin_open: true diff --git a/src/easy-dataset/docker-compose.yaml b/src/easy-dataset/docker-compose.yaml index 0c834aa..dea8657 100644 --- a/src/easy-dataset/docker-compose.yaml +++ b/src/easy-dataset/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: easy-dataset: - <<: *default + <<: *defaults image: ghcr.io/conardli/easy-dataset:${EASY_DATASET_VERSION:-1.5.1} ports: - "${EASY_DATASET_PORT_OVERRIDE:-1717}:1717" diff --git a/src/elasticsearch/docker-compose.yaml b/src/elasticsearch/docker-compose.yaml index 7746ee7..5d2959c 100644 --- a/src/elasticsearch/docker-compose.yaml +++ b/src/elasticsearch/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: elasticsearch: - <<: *default + <<: *defaults image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTICSEARCH_VERSION:-8.16.1} ports: - "${ELASTICSEARCH_HTTP_PORT_OVERRIDE:-9200}:9200" diff --git a/src/etcd/docker-compose.yaml b/src/etcd/docker-compose.yaml index 3cb517a..1d1f167 100644 --- a/src/etcd/docker-compose.yaml +++ b/src/etcd/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: etcd: - <<: *default + <<: *defaults image: quay.io/coreos/etcd:${ETCD_VERSION:-v3.6.0} ports: - "${ETCD_CLIENT_PORT_OVERRIDE:-2379}:2379" diff --git a/src/firecrawl/docker-compose.yaml b/src/firecrawl/docker-compose.yaml index e7f1323..ababafe 100644 --- a/src/firecrawl/docker-compose.yaml +++ b/src/firecrawl/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -38,7 +38,7 @@ x-common-env: &common-env services: playwright-service: - <<: *default + <<: *defaults image: ghcr.io/firecrawl/playwright-service:${PLAYWRIGHT_VERSION:-latest} environment: PORT: 3000 @@ -56,7 +56,7 @@ services: memory: 512M api: - <<: *default + <<: *defaults image: ghcr.io/firecrawl/firecrawl:${FIRECRAWL_VERSION:-latest} environment: <<: *common-env @@ -99,7 +99,7 @@ services: start_period: 30s redis: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-alpine} command: redis-server --bind 0.0.0.0 volumes: @@ -120,7 +120,7 @@ services: start_period: 5s nuq-postgres: - <<: *default + <<: *defaults image: ghcr.io/firecrawl/nuq-postgres:${NUQ_POSTGRES_VERSION:-latest} environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} diff --git a/src/flink/docker-compose.yaml b/src/flink/docker-compose.yaml index 9c0a6b9..0639fcd 100644 --- a/src/flink/docker-compose.yaml +++ b/src/flink/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: jobmanager: - <<: *default + <<: *defaults image: flink:${FLINK_VERSION:-1.20.0-scala_2.12-java11} hostname: jobmanager command: jobmanager @@ -42,7 +42,7 @@ services: start_period: 30s taskmanager: - <<: *default + <<: *defaults image: flink:${FLINK_VERSION:-1.20.0-scala_2.12-java11} command: taskmanager environment: diff --git a/src/frpc/docker-compose.yaml b/src/frpc/docker-compose.yaml index b0e156e..889a271 100644 --- a/src/frpc/docker-compose.yaml +++ b/src/frpc/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: frpc: - <<: *default + <<: *defaults image: snowdreamtech/frpc:${FRPC_VERSION:-0.64.0} volumes: - ./frpc.toml:/etc/frp/frpc.toml:ro diff --git a/src/frps/docker-compose.yaml b/src/frps/docker-compose.yaml index 069bdd5..59ccf48 100644 --- a/src/frps/docker-compose.yaml +++ b/src/frps/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: frps: - <<: *default + <<: *defaults image: snowdreamtech/frps:${FRPS_VERSION:-0.64.0} volumes: - ./frps.toml:/etc/frp/frps.toml:ro diff --git a/src/gitea-runner/docker-compose.yaml b/src/gitea-runner/docker-compose.yaml index 066da0e..829cd47 100644 --- a/src/gitea-runner/docker-compose.yaml +++ b/src/gitea-runner/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: gitea_runner: - <<: *default + <<: *defaults image: gitea/act_runner:0.2.12 environment: TZ: ${TZ:-UTC} diff --git a/src/gitea/docker-compose.yaml b/src/gitea/docker-compose.yaml index f83ca3b..1b54c97 100644 --- a/src/gitea/docker-compose.yaml +++ b/src/gitea/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: gitea: - <<: *default + <<: *defaults image: gitea/gitea:${GITEA_VERSION:-1.24.6-rootless} environment: - USER_UID=1000 @@ -43,7 +43,7 @@ services: start_period: 30s db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17.6} environment: - TZ=${TZ:-UTC} diff --git a/src/gitlab-runner/docker-compose.yaml b/src/gitlab-runner/docker-compose.yaml index 42bf623..5d64c98 100644 --- a/src/gitlab-runner/docker-compose.yaml +++ b/src/gitlab-runner/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: gitlab-runner: - <<: *default + <<: *defaults image: gitlab/gitlab-runner:${GITLAB_RUNNER_VERSION:-alpine3.21-v18.4.0} volumes: - /var/run/docker.sock:/var/run/docker.sock diff --git a/src/gitlab/docker-compose.yaml b/src/gitlab/docker-compose.yaml index cd588fc..0be2e46 100644 --- a/src/gitlab/docker-compose.yaml +++ b/src/gitlab/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: gitlab: - <<: *default + <<: *defaults image: gitlab/gitlab-ce:${GITLAB_VERSION:-18.4.0-ce.0} ports: - "${GITLAB_PORT_OVERRIDE_HTTPS:-5443}:443" diff --git a/src/gpustack/docker-compose.yaml b/src/gpustack/docker-compose.yaml index 380faa9..c252d0a 100644 --- a/src/gpustack/docker-compose.yaml +++ b/src/gpustack/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: gpustack: - <<: *default + <<: *defaults image: gpustack/gpustack:${GPUSTACK_VERSION:-v0.7.1} ports: - "${GPUSTACK_PORT_OVERRIDE:-80}:80" diff --git a/src/grafana/docker-compose.yaml b/src/grafana/docker-compose.yaml index fad479a..4373b62 100644 --- a/src/grafana/docker-compose.yaml +++ b/src/grafana/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: grafana: - <<: *default + <<: *defaults image: grafana/grafana:${GRAFANA_VERSION:-12.1.1} ports: - "${GRAFANA_PORT_OVERRIDE:-3000}:3000" diff --git a/src/halo/docker-compose.yaml b/src/halo/docker-compose.yaml index 108219e..4e08075 100644 --- a/src/halo/docker-compose.yaml +++ b/src/halo/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: halo: - <<: *default + <<: *defaults image: halohub/halo:${HALO_VERSION:-2.21.9} ports: - "${HALO_PORT:-8090}:8090" @@ -42,7 +42,7 @@ services: start_period: 60s halo-db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17.2-alpine3.21} environment: - TZ=${TZ:-UTC} diff --git a/src/harbor/docker-compose.yaml b/src/harbor/docker-compose.yaml index b5c7e1f..ca6c1e0 100644 --- a/src/harbor/docker-compose.yaml +++ b/src/harbor/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -9,7 +9,7 @@ x-default: &default services: # Harbor Core harbor-core: - <<: *default + <<: *defaults image: goharbor/harbor-core:${HARBOR_VERSION:-v2.12.0} depends_on: harbor-db: @@ -47,7 +47,7 @@ services: # Harbor JobService harbor-jobservice: - <<: *default + <<: *defaults image: goharbor/harbor-jobservice:${HARBOR_VERSION:-v2.12.0} depends_on: harbor-db: @@ -70,7 +70,7 @@ services: # Harbor Registry harbor-registry: - <<: *default + <<: *defaults image: goharbor/registry-photon:${HARBOR_VERSION:-v2.12.0} volumes: - harbor_registry:/storage @@ -86,14 +86,14 @@ services: # Harbor Portal (UI) harbor-portal: - <<: *default + <<: *defaults image: goharbor/harbor-portal:${HARBOR_VERSION:-v2.12.0} environment: - TZ=${TZ:-UTC} # Harbor Proxy (Nginx) harbor-proxy: - <<: *default + <<: *defaults image: goharbor/nginx-photon:${HARBOR_VERSION:-v2.12.0} ports: - "${HARBOR_HTTP_PORT_OVERRIDE:-80}:8080" @@ -116,7 +116,7 @@ services: # Harbor Database harbor-db: - <<: *default + <<: *defaults image: goharbor/harbor-db:${HARBOR_VERSION:-v2.12.0} volumes: - harbor_db:/var/lib/postgresql/data @@ -141,7 +141,7 @@ services: # Harbor Redis harbor-redis: - <<: *default + <<: *defaults image: goharbor/redis-photon:${HARBOR_VERSION:-v2.12.0} volumes: - harbor_redis:/var/lib/redis diff --git a/src/hbase/docker-compose.yaml b/src/hbase/docker-compose.yaml index 0ba6b41..1ee9154 100644 --- a/src/hbase/docker-compose.yaml +++ b/src/hbase/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: hbase: - <<: *default + <<: *defaults image: harisekhon/hbase:${HBASE_VERSION:-2.6} hostname: hbase environment: diff --git a/src/io-paint/docker-compose.yaml b/src/io-paint/docker-compose.yaml index 3189950..697ca49 100644 --- a/src/io-paint/docker-compose.yaml +++ b/src/io-paint/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: lama-cleaner: - <<: *default + <<: *defaults image: ${DOCKER_REGISTRY:-docker.io}/local/lama-cleaner:${BUILD_VERSION:-latest} ports: - 8080:8080 diff --git a/src/jenkins/docker-compose.yaml b/src/jenkins/docker-compose.yaml index dd6d9e0..b9d07db 100644 --- a/src/jenkins/docker-compose.yaml +++ b/src/jenkins/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: jenkins: - <<: *default + <<: *defaults image: jenkins/jenkins:${JENKINS_VERSION:-2.486-lts-jdk17} ports: - "${JENKINS_HTTP_PORT_OVERRIDE:-8080}:8080" diff --git a/src/jodconverter/docker-compose.yaml b/src/jodconverter/docker-compose.yaml index 6017b86..c726f2b 100644 --- a/src/jodconverter/docker-compose.yaml +++ b/src/jodconverter/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: officeconverter: - <<: *default + <<: *defaults image: ghcr.io/eugenmayer/kontextwork-converter:${OFFICECONVERTER_VERSION:-latest} ports: - "${OFFICECONVERTER_PORT_OVERRIDE:-8000}:8000" diff --git a/src/kafka/docker-compose.yaml b/src/kafka/docker-compose.yaml index f13558d..da9b230 100644 --- a/src/kafka/docker-compose.yaml +++ b/src/kafka/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -9,7 +9,7 @@ x-default: &default services: # Zookeeper for Kafka coordination zookeeper: - <<: *default + <<: *defaults image: confluentinc/cp-zookeeper:${KAFKA_VERSION:-7.8.0} ports: - "${ZOOKEEPER_CLIENT_PORT_OVERRIDE:-2181}:2181" @@ -42,7 +42,7 @@ services: # Kafka broker kafka: - <<: *default + <<: *defaults image: confluentinc/cp-kafka:${KAFKA_VERSION:-7.8.0} depends_on: zookeeper: @@ -90,7 +90,7 @@ services: # Kafka UI (optional) kafka-ui: - <<: *default + <<: *defaults image: provectuslabs/kafka-ui:${KAFKA_UI_VERSION:-latest} depends_on: kafka: diff --git a/src/kestra/docker-compose.yaml b/src/kestra/docker-compose.yaml index 242f080..8799498 100644 --- a/src/kestra/docker-compose.yaml +++ b/src/kestra/docker-compose.yaml @@ -24,7 +24,7 @@ # # License: Apache-2.0 (https://github.com/kestra-io/kestra/blob/develop/LICENSE) -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -34,7 +34,7 @@ x-default: &default services: kestra: - <<: *default + <<: *defaults image: kestra/kestra:${KESTRA_VERSION:-latest-full} container_name: kestra command: server standalone @@ -91,7 +91,7 @@ services: memory: "${KESTRA_MEMORY_RESERVATION:-512M}" postgres: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-16-alpine} container_name: kestra-postgres environment: diff --git a/src/kibana/docker-compose.yaml b/src/kibana/docker-compose.yaml index 5b76c87..b87484e 100644 --- a/src/kibana/docker-compose.yaml +++ b/src/kibana/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: kibana: - <<: *default + <<: *defaults image: docker.elastic.co/kibana/kibana:${KIBANA_VERSION:-8.16.1} ports: - "${KIBANA_PORT_OVERRIDE:-5601}:5601" diff --git a/src/kodbox/docker-compose.yaml b/src/kodbox/docker-compose.yaml index b3c78ee..e839a7c 100644 --- a/src/kodbox/docker-compose.yaml +++ b/src/kodbox/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: kodbox: - <<: *default + <<: *defaults image: kodcloud/kodbox:${KODBOX_VERSION:-1.62} ports: - "${KODBOX_PORT:-80}:80" @@ -45,7 +45,7 @@ services: start_period: 30s kodbox-db: - <<: *default + <<: *defaults image: mysql:${MYSQL_VERSION:-9.4.0} environment: - TZ=${TZ:-UTC} @@ -75,7 +75,7 @@ services: memory: 256M kodbox-redis: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine3.22} command: - redis-server diff --git a/src/kong/docker-compose.yaml b/src/kong/docker-compose.yaml index 3d4b9ee..3c48ffe 100644 --- a/src/kong/docker-compose.yaml +++ b/src/kong/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -9,7 +9,7 @@ x-default: &default services: # Kong Database kong-db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-16.6-alpine3.21} volumes: - kong_db_data:/var/lib/postgresql/data @@ -35,7 +35,7 @@ services: # Kong Database Migration kong-migrations: - <<: *default + <<: *defaults image: kong:${KONG_VERSION:-3.8.0-alpine} depends_on: kong-db: @@ -52,7 +52,7 @@ services: # Kong Gateway kong: - <<: *default + <<: *defaults image: kong:${KONG_VERSION:-3.8.0-alpine} depends_on: kong-db: @@ -97,7 +97,7 @@ services: # Kong Manager (Optional GUI) kong-gui: - <<: *default + <<: *defaults image: pantsel/konga:${KONGA_VERSION:-latest} depends_on: kong: diff --git a/src/langflow/docker-compose.yaml b/src/langflow/docker-compose.yaml index d390ab0..2665da0 100644 --- a/src/langflow/docker-compose.yaml +++ b/src/langflow/docker-compose.yaml @@ -25,7 +25,7 @@ # # License: MIT (https://github.com/langflow-ai/langflow/blob/main/LICENSE) -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -35,7 +35,7 @@ x-default: &default services: langflow: - <<: *default + <<: *defaults image: langflowai/langflow:${LANGFLOW_VERSION:-latest} pull_policy: always container_name: langflow @@ -99,7 +99,7 @@ services: memory: "${LANGFLOW_MEMORY_RESERVATION:-512M}" postgres: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-16-alpine} container_name: langflow-postgres environment: diff --git a/src/langfuse/docker-compose.yaml b/src/langfuse/docker-compose.yaml index ea891f2..58f36cd 100644 --- a/src/langfuse/docker-compose.yaml +++ b/src/langfuse/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: langfuse-server: - <<: *default + <<: *defaults image: langfuse/langfuse:${LANGFUSE_VERSION:-3.115.0} ports: - "${LANGFUSE_PORT:-3000}:3000" @@ -39,7 +39,7 @@ services: start_period: 30s langfuse-db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17.2-alpine3.21} environment: - TZ=${TZ:-UTC} diff --git a/src/libreoffice/docker-compose.yaml b/src/libreoffice/docker-compose.yaml index 6c3db37..f3821d7 100644 --- a/src/libreoffice/docker-compose.yaml +++ b/src/libreoffice/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: libreoffice: - <<: *default + <<: *defaults image: lscr.io/linuxserver/libreoffice:${LIBREOFFICE_VERSION:-latest} ports: - "${LIBREOFFICE_HTTP_PORT_OVERRIDE:-3000}:3000" diff --git a/src/litellm/docker-compose.yaml b/src/litellm/docker-compose.yaml index e2bd7ad..055f4f3 100644 --- a/src/litellm/docker-compose.yaml +++ b/src/litellm/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: litellm: - <<: *default + <<: *defaults build: context: . args: @@ -48,7 +48,7 @@ services: memory: 512M db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-16} environment: - POSTGRES_DB=litellm @@ -75,7 +75,7 @@ services: memory: 256M prometheus: - <<: *default + <<: *defaults image: prom/prometheus:${PROMETHEUS_VERSION:-v3.3.1} profiles: - metrics diff --git a/src/logstash/docker-compose.yaml b/src/logstash/docker-compose.yaml index b3c87a3..b2d68f5 100644 --- a/src/logstash/docker-compose.yaml +++ b/src/logstash/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: logstash: - <<: *default + <<: *defaults image: docker.elastic.co/logstash/logstash:${LOGSTASH_VERSION:-8.16.1} ports: - "${LOGSTASH_BEATS_PORT_OVERRIDE:-5044}:5044" diff --git a/src/mariadb-galera/docker-compose.yaml b/src/mariadb-galera/docker-compose.yaml index 3005cfd..60bacb5 100644 --- a/src/mariadb-galera/docker-compose.yaml +++ b/src/mariadb-galera/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -7,7 +7,7 @@ x-default: &default max-file: "3" x-mariadb-galera: &mariadb-galera - <<: *default + <<: *defaults image: mariadb:${MARIADB_VERSION:-11.7.2} environment: &galera-env TZ: ${TZ:-UTC} diff --git a/src/milvus-standalone-embed/docker-compose.yaml b/src/milvus-standalone-embed/docker-compose.yaml index 1da7562..aa8276e 100644 --- a/src/milvus-standalone-embed/docker-compose.yaml +++ b/src/milvus-standalone-embed/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: milvus-standalone-embed: - <<: *default + <<: *defaults image: milvusdb/milvus:${MILVUS_VERSION:-v2.6.3} security_opt: - seccomp:unconfined @@ -44,7 +44,7 @@ services: memory: 2G attu: - <<: *default + <<: *defaults image: zilliz/attu:${ATTU_VERSION:-v2.6.1} profiles: - attu diff --git a/src/milvus-standalone/docker-compose.yaml b/src/milvus-standalone/docker-compose.yaml index e01a687..2803a47 100644 --- a/src/milvus-standalone/docker-compose.yaml +++ b/src/milvus-standalone/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: etcd: - <<: *default + <<: *defaults image: quay.io/coreos/etcd:${ETCD_VERSION:-v3.5.18} environment: - TZ=${TZ:-UTC} @@ -35,7 +35,7 @@ services: memory: 128M minio: - <<: *default + <<: *defaults image: minio/minio:${MINIO_VERSION:-RELEASE.2024-12-18T13-15-44Z} environment: TZ: ${TZ:-UTC} @@ -63,7 +63,7 @@ services: memory: 256M milvus-standalone: - <<: *default + <<: *defaults image: milvusdb/milvus:${MILVUS_VERSION:-v2.6.3} command: ["milvus", "run", "standalone"] security_opt: @@ -99,7 +99,7 @@ services: memory: 2G attu: - <<: *default + <<: *defaults image: zilliz/attu:${ATTU_VERSION:-v2.6.1} profiles: - attu diff --git a/src/minecraft-bedrock-server/docker-compose.yaml b/src/minecraft-bedrock-server/docker-compose.yaml index c78959d..1668ef1 100644 --- a/src/minecraft-bedrock-server/docker-compose.yaml +++ b/src/minecraft-bedrock-server/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: minecraft-bedrock: - <<: *default + <<: *defaults image: itzg/minecraft-bedrock-server:${BEDROCK_VERSION:-latest} environment: TZ: ${TZ:-UTC} diff --git a/src/mineru-sgalng/docker-compose.yaml b/src/mineru-sgalng/docker-compose.yaml index b06c9c7..a36aeec 100644 --- a/src/mineru-sgalng/docker-compose.yaml +++ b/src/mineru-sgalng/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -7,7 +7,7 @@ x-default: &default max-file: "3" x-mineru-sglang: &mineru-sglang - <<: *default + <<: *defaults image: ${MINERU_DOCKER_IMAGE:-alexsuntop/mineru-sglang:2.2.2} environment: TZ: ${TZ:-UTC} diff --git a/src/mineru-vllm/docker-compose.yaml b/src/mineru-vllm/docker-compose.yaml index 18b710b..d29d9e4 100644 --- a/src/mineru-vllm/docker-compose.yaml +++ b/src/mineru-vllm/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -7,7 +7,7 @@ x-default: &default max-file: "3" x-mineru-vllm: &mineru-vllm - <<: *default + <<: *defaults image: ${MINERU_DOCKER_IMAGE:-alexsuntop/mineru:2.6.2} build: context: . diff --git a/src/minio/docker-compose.yaml b/src/minio/docker-compose.yaml index 6cfb5a6..9a8a4d6 100644 --- a/src/minio/docker-compose.yaml +++ b/src/minio/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: minio: - <<: *default + <<: *defaults image: minio/minio:${MINIO_VERSION:-RELEASE.2025-09-07T16-13-09Z} ports: - "${MINIO_PORT_OVERRIDE_API:-9000}:9000" diff --git a/src/mlflow/docker-compose.yaml b/src/mlflow/docker-compose.yaml index 5002fb4..fb377ae 100644 --- a/src/mlflow/docker-compose.yaml +++ b/src/mlflow/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: postgres: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17.6-alpine} environment: TZ: ${TZ:-UTC} @@ -33,7 +33,7 @@ services: start_period: 30s minio: - <<: *default + <<: *defaults image: minio/minio:${MINIO_VERSION:-RELEASE.2025-01-07T16-13-09Z} command: server /data --console-address ":9001" environment: @@ -61,7 +61,7 @@ services: start_period: 30s minio-init: - <<: *default + <<: *defaults image: minio/mc:${MINIO_MC_VERSION:-RELEASE.2025-01-07T17-25-52Z} depends_on: minio: @@ -76,7 +76,7 @@ services: restart: "no" mlflow: - <<: *default + <<: *defaults image: ghcr.io/mlflow/mlflow:${MLFLOW_VERSION:-v2.20.2} depends_on: postgres: diff --git a/src/mongodb-replicaset-single/docker-compose.yaml b/src/mongodb-replicaset-single/docker-compose.yaml index 95463b0..fb0aea9 100644 --- a/src/mongodb-replicaset-single/docker-compose.yaml +++ b/src/mongodb-replicaset-single/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -7,7 +7,7 @@ x-default: &default max-file: "3" x-mongo: &mongo - <<: *default + <<: *defaults image: mongo:${MONGO_VERSION:-8.0.13} environment: TZ: ${TZ:-UTC} @@ -50,7 +50,7 @@ services: - "${MONGO_PORT_OVERRIDE_1:-27017}:27017" mongo-init: - <<: *default + <<: *defaults image: mongo:${MONGO_VERSION:-8.0.13} restart: on-failure depends_on: diff --git a/src/mongodb-replicaset/docker-compose.yaml b/src/mongodb-replicaset/docker-compose.yaml index 7bcbcb9..da06222 100644 --- a/src/mongodb-replicaset/docker-compose.yaml +++ b/src/mongodb-replicaset/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -7,7 +7,7 @@ x-default: &default max-file: "3" x-mongo: &mongo - <<: *default + <<: *defaults image: mongo:${MONGO_VERSION:-8.0.13} environment: TZ: ${TZ:-UTC} @@ -59,7 +59,7 @@ services: - "${MONGO_PORT_OVERRIDE_3:-27019}:27017" mongo-init: - <<: *default + <<: *defaults image: mongo:${MONGO_VERSION:-8.0.13} restart: on-failure depends_on: diff --git a/src/mongodb-standalone/docker-compose.yaml b/src/mongodb-standalone/docker-compose.yaml index e5771bd..300fe13 100644 --- a/src/mongodb-standalone/docker-compose.yaml +++ b/src/mongodb-standalone/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mongo: - <<: *default + <<: *defaults image: mongo:${MONGO_VERSION:-8.0.13} environment: TZ: ${TZ:-UTC} diff --git a/src/mysql/docker-compose.yaml b/src/mysql/docker-compose.yaml index 7768ac2..60527a1 100644 --- a/src/mysql/docker-compose.yaml +++ b/src/mysql/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: mysql: - <<: *default + <<: *defaults image: mysql:${MYSQL_VERSION:-9.4.0} ports: - "${MYSQL_PORT_OVERRIDE:-3306}:3306" diff --git a/src/n8n/docker-compose.yaml b/src/n8n/docker-compose.yaml index 8eb5c21..112a839 100644 --- a/src/n8n/docker-compose.yaml +++ b/src/n8n/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: n8n: - <<: *default + <<: *defaults image: n8nio/n8n:${N8N_VERSION:-1.114.0} ports: - "${N8N_PORT:-5678}:5678" @@ -55,7 +55,7 @@ services: start_period: 30s n8n-db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17.2-alpine3.21} environment: - TZ=${TZ:-UTC} diff --git a/src/nacos/docker-compose.yaml b/src/nacos/docker-compose.yaml index f9a629a..befd56c 100644 --- a/src/nacos/docker-compose.yaml +++ b/src/nacos/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: nacos: - <<: *default + <<: *defaults image: nacos/nacos-server:${NACOS_VERSION:-v3.1.0-slim} ports: - "${NACOS_HTTP_PORT_OVERRIDE:-8848}:8848" diff --git a/src/nebulagraph/docker-compose.yaml b/src/nebulagraph/docker-compose.yaml index ec13e1a..df13e2d 100644 --- a/src/nebulagraph/docker-compose.yaml +++ b/src/nebulagraph/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: metad: - <<: *default + <<: *defaults image: vesoft/nebula-metad:${NEBULA_VERSION:-v3.8.0} environment: - TZ=${TZ:-UTC} @@ -43,7 +43,7 @@ services: start_period: 30s storaged: - <<: *default + <<: *defaults image: vesoft/nebula-storaged:${NEBULA_VERSION:-v3.8.0} environment: - TZ=${TZ:-UTC} @@ -81,7 +81,7 @@ services: start_period: 30s graphd: - <<: *default + <<: *defaults image: vesoft/nebula-graphd:${NEBULA_VERSION:-v3.8.0} environment: - TZ=${TZ:-UTC} diff --git a/src/neo4j/docker-compose.yaml b/src/neo4j/docker-compose.yaml index 0ee1137..4d49df3 100644 --- a/src/neo4j/docker-compose.yaml +++ b/src/neo4j/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: neo4j: - <<: *default + <<: *defaults image: neo4j:${NEO4J_VERSION:-5.27.4-community} ports: - "${NEO4J_HTTP_PORT_OVERRIDE:-7474}:7474" diff --git a/src/nginx/docker-compose.yaml b/src/nginx/docker-compose.yaml index 8a3cb6f..d838ab8 100644 --- a/src/nginx/docker-compose.yaml +++ b/src/nginx/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: nginx: - <<: *default + <<: *defaults image: nginx:${NGINX_VERSION:-1.29.2-alpine3.22} ports: - "${NGINX_HTTP_PORT_OVERRIDE:-80}:80" diff --git a/src/node-exporter/docker-compose.yaml b/src/node-exporter/docker-compose.yaml index 70d2016..7baeadf 100644 --- a/src/node-exporter/docker-compose.yaml +++ b/src/node-exporter/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: node-exporter: - <<: *default + <<: *defaults image: prom/node-exporter:${NODE_EXPORTER_VERSION:-v1.8.2} ports: - "${NODE_EXPORTER_PORT_OVERRIDE:-9100}:9100" diff --git a/src/oceanbase/docker-compose.yaml b/src/oceanbase/docker-compose.yaml index 2608d13..70c18cf 100644 --- a/src/oceanbase/docker-compose.yaml +++ b/src/oceanbase/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: oceanbase: - <<: *default + <<: *defaults image: oceanbase/oceanbase-ce:${OCEANBASE_VERSION:-4.3.3.1-106000012024110114} environment: TZ: ${TZ:-UTC} diff --git a/src/odoo/docker-compose.yaml b/src/odoo/docker-compose.yaml index b150511..32f9a5c 100644 --- a/src/odoo/docker-compose.yaml +++ b/src/odoo/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: odoo: - <<: *default + <<: *defaults image: odoo:${ODOO_VERSION:-19.0} depends_on: odoo-db: @@ -41,7 +41,7 @@ services: start_period: 60s odoo-db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17-alpine} environment: - TZ=${TZ:-UTC} diff --git a/src/ollama/docker-compose.yaml b/src/ollama/docker-compose.yaml index 57ff871..97489f6 100644 --- a/src/ollama/docker-compose.yaml +++ b/src/ollama/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: ollama: - <<: *default + <<: *defaults image: ollama/ollama:${OLLAMA_VERSION:-0.12.6} ports: - "${OLLAMA_PORT_OVERRIDE:-11434}:11434" diff --git a/src/open-webui/docker-compose.yaml b/src/open-webui/docker-compose.yaml index 92d2fe3..847b200 100644 --- a/src/open-webui/docker-compose.yaml +++ b/src/open-webui/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: open_webui: - <<: *default + <<: *defaults image: ghcr.io/open-webui/open-webui:${OPEN_WEBUI_VERSION:-main} ports: - "${OPEN_WEBUI_PORT_OVERRIDE:-8080}:8080" diff --git a/src/opencoze/docker-compose.yaml b/src/opencoze/docker-compose.yaml index bfc8784..2eb4494 100644 --- a/src/opencoze/docker-compose.yaml +++ b/src/opencoze/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file diff --git a/src/opencut/docker-compose.yaml b/src/opencut/docker-compose.yaml index aef3413..a1390df 100644 --- a/src/opencut/docker-compose.yaml +++ b/src/opencut/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: db: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17} environment: TZ: ${TZ:-UTC} @@ -35,7 +35,7 @@ services: memory: 256M redis: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-7-alpine} ports: - "${REDIS_PORT_OVERRIDE:-6379}:6379" @@ -55,7 +55,7 @@ services: memory: 128M serverless-redis-http: - <<: *default + <<: *defaults image: hiett/serverless-redis-http:${SERVERLESS_REDIS_HTTP_VERSION:-latest} ports: - "${SERVERLESS_REDIS_HTTP_PORT_OVERRIDE:-8079}:80" @@ -82,7 +82,7 @@ services: memory: 64M web: - <<: *default + <<: *defaults image: ${OPENCUT_WEB_IMAGE:-opencut/web:latest} ports: - "${OPENCUT_WEB_PORT_OVERRIDE:-3100}:3000" diff --git a/src/openlist/docker-compose.yaml b/src/openlist/docker-compose.yaml index bc2a4a5..ea38768 100644 --- a/src/openlist/docker-compose.yaml +++ b/src/openlist/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: openlist: - <<: *default + <<: *defaults image: openlistteam/openlist:${OPENLIST_VERSION:-latest} ports: - "${OPENLIST_PORT_OVERRIDE:-5244}:5244" diff --git a/src/opensearch/docker-compose.yaml b/src/opensearch/docker-compose.yaml index 833ec6f..6340474 100644 --- a/src/opensearch/docker-compose.yaml +++ b/src/opensearch/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: opensearch: - <<: *default + <<: *defaults image: opensearchproject/opensearch:${OPENSEARCH_VERSION:-2.19.0} environment: TZ: ${TZ:-UTC} @@ -47,7 +47,7 @@ services: start_period: 60s opensearch-dashboards: - <<: *default + <<: *defaults image: opensearchproject/opensearch-dashboards:${OPENSEARCH_DASHBOARDS_VERSION:-2.19.0} ports: - "${OPENSEARCH_DASHBOARDS_PORT_OVERRIDE:-5601}:5601" diff --git a/src/pocketbase/docker-compose.yaml b/src/pocketbase/docker-compose.yaml index 2ff1383..ddea81e 100644 --- a/src/pocketbase/docker-compose.yaml +++ b/src/pocketbase/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: pocketbase: - <<: *default + <<: *defaults image: ghcr.io/muchobien/pocketbase:${PB_VERSION:-0.30.0} environment: TZ: ${TZ:-UTC} diff --git a/src/portainer/docker-compose.yaml b/src/portainer/docker-compose.yaml index 44bb10b..e6b7561 100644 --- a/src/portainer/docker-compose.yaml +++ b/src/portainer/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: portainer: - <<: *default + <<: *defaults image: portainer/portainer-ce:${PORTAINER_VERSION:-2.27.3-alpine} ports: - "${PORTAINER_WEB_PORT_OVERRIDE:-9000}:9000" diff --git a/src/portkey-gateway/docker-compose.yaml b/src/portkey-gateway/docker-compose.yaml index 9991a59..fdaa5b4 100644 --- a/src/portkey-gateway/docker-compose.yaml +++ b/src/portkey-gateway/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: portkey-gateway: - <<: *default + <<: *defaults image: portkeyai/gateway:${PORTKEY_GATEWAY_VERSION:-latest} ports: - "${PORTKEY_GATEWAY_PORT_OVERRIDE:-8787}:8787" diff --git a/src/postgres/docker-compose.yaml b/src/postgres/docker-compose.yaml index fadb16b..ec1b058 100644 --- a/src/postgres/docker-compose.yaml +++ b/src/postgres/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: postgres: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-17.6} environment: TZ: ${TZ:-UTC} diff --git a/src/prometheus/docker-compose.yaml b/src/prometheus/docker-compose.yaml index ac87d27..114330c 100644 --- a/src/prometheus/docker-compose.yaml +++ b/src/prometheus/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: prometheus: - <<: *default + <<: *defaults image: prom/prometheus:${PROMETHEUS_VERSION:-v3.5.0} ports: - "${PROMETHEUS_PORT_OVERRIDE:-9090}:9090" diff --git a/src/pytorch/docker-compose.yaml b/src/pytorch/docker-compose.yaml index e0dc9e8..4042ed6 100644 --- a/src/pytorch/docker-compose.yaml +++ b/src/pytorch/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: pytorch: - <<: *default + <<: *defaults image: pytorch/pytorch:${PYTORCH_VERSION:-2.6.0-cuda12.6-cudnn9-runtime} ports: - "${JUPYTER_PORT_OVERRIDE:-8888}:8888" diff --git a/src/qdrant/docker-compose.yaml b/src/qdrant/docker-compose.yaml index a25d7b7..c5e6369 100644 --- a/src/qdrant/docker-compose.yaml +++ b/src/qdrant/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: qdrant: - <<: *default + <<: *defaults image: qdrant/qdrant:${QDRANT_VERSION:-v1.15.4} ports: - "${QDRANT_HTTP_PORT:-6333}:6333" diff --git a/src/rabbitmq/docker-compose.yaml b/src/rabbitmq/docker-compose.yaml index 213e095..6d5aca6 100644 --- a/src/rabbitmq/docker-compose.yaml +++ b/src/rabbitmq/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: rabbitmq: - <<: *default + <<: *defaults image: rabbitmq:${RABBITMQ_VERSION:-4.1.4-management-alpine} volumes: - rabbitmq_data:/var/lib/rabbitmq diff --git a/src/ray/README.md b/src/ray/README.md index 387bf6a..37bce6e 100644 --- a/src/ray/README.md +++ b/src/ray/README.md @@ -126,7 +126,7 @@ To add more worker nodes, add new service definitions: ```yaml ray-worker-3: - <<: *default + <<: *defaults image: rayproject/ray:${RAY_VERSION:-2.42.1-py312} container_name: ray-worker-3 command: ray start --address=ray-head:6379 --block diff --git a/src/ray/README.zh.md b/src/ray/README.zh.md index b2912be..3ab8912 100644 --- a/src/ray/README.zh.md +++ b/src/ray/README.zh.md @@ -126,7 +126,7 @@ print(result) ```yaml ray-worker-3: - <<: *default + <<: *defaults image: rayproject/ray:${RAY_VERSION:-2.42.1-py312} container_name: ray-worker-3 command: ray start --address=ray-head:6379 --block diff --git a/src/ray/docker-compose.yaml b/src/ray/docker-compose.yaml index f43210c..9f9c8d7 100644 --- a/src/ray/docker-compose.yaml +++ b/src/ray/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: ray-head: - <<: *default + <<: *defaults image: rayproject/ray:${RAY_VERSION:-2.42.1-py312} command: ray start --head --dashboard-host=0.0.0.0 --port=6379 --block ports: @@ -37,7 +37,7 @@ services: start_period: 30s ray-worker-1: - <<: *default + <<: *defaults image: rayproject/ray:${RAY_VERSION:-2.42.1-py312} command: ray start --address=ray-head:6379 --block depends_on: @@ -57,7 +57,7 @@ services: memory: 2G ray-worker-2: - <<: *default + <<: *defaults image: rayproject/ray:${RAY_VERSION:-2.42.1-py312} command: ray start --address=ray-head:6379 --block depends_on: diff --git a/src/redis-cluster/docker-compose.yaml b/src/redis-cluster/docker-compose.yaml index 55d1e11..38fc809 100644 --- a/src/redis-cluster/docker-compose.yaml +++ b/src/redis-cluster/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -37,7 +37,7 @@ services: - init redis-1: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine} environment: - TZ=${TZ:-UTC} @@ -62,7 +62,7 @@ services: start_period: 5s redis-2: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine} environment: - TZ=${TZ:-UTC} @@ -87,7 +87,7 @@ services: start_period: 5s redis-3: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine} environment: - TZ=${TZ:-UTC} @@ -112,7 +112,7 @@ services: start_period: 5s redis-4: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine} environment: - TZ=${TZ:-UTC} @@ -137,7 +137,7 @@ services: start_period: 5s redis-5: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine} environment: - TZ=${TZ:-UTC} @@ -162,7 +162,7 @@ services: start_period: 5s redis-6: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine} environment: - TZ=${TZ:-UTC} diff --git a/src/redis/docker-compose.yaml b/src/redis/docker-compose.yaml index 6bd2294..f0daac6 100644 --- a/src/redis/docker-compose.yaml +++ b/src/redis/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: redis: - <<: *default + <<: *defaults image: redis:${REDIS_VERSION:-8.2.1-alpine3.22} ports: - "${REDIS_PORT_OVERRIDE:-6379}:6379" diff --git a/src/restate-cluster/.env.example b/src/restate-cluster/.env.example new file mode 100644 index 0000000..afd4ab2 --- /dev/null +++ b/src/restate-cluster/.env.example @@ -0,0 +1,49 @@ +# Restate version +RESTATE_VERSION=1.5.3 + +# Cluster configuration +RESTATE_CLUSTER_NAME=restate-cluster +RESTATE_DEFAULT_REPLICATION=2 + +# Node 1 ports (primary node) +NODE1_INGRESS_PORT_OVERRIDE=8080 +NODE1_ADMIN_PORT_OVERRIDE=9070 +NODE1_NODE_PORT_OVERRIDE=5122 + +# Node 2 ports +NODE2_INGRESS_PORT_OVERRIDE=28080 +NODE2_ADMIN_PORT_OVERRIDE=29070 +NODE2_NODE_PORT_OVERRIDE=25122 + +# Node 3 ports +NODE3_INGRESS_PORT_OVERRIDE=38080 +NODE3_ADMIN_PORT_OVERRIDE=39070 +NODE3_NODE_PORT_OVERRIDE=35122 + +# Node advertised addresses (internal network) +RESTATE_NODE1_ADVERTISED_ADDRESS=http://restate-1:5122 +RESTATE_NODE2_ADVERTISED_ADDRESS=http://restate-2:5122 +RESTATE_NODE3_ADVERTISED_ADDRESS=http://restate-3:5122 + +# Metadata client addresses +RESTATE_METADATA_CLIENT__ADDRESSES=["http://restate-1:5122","http://restate-2:5122","http://restate-3:5122"] + +# Snapshot configuration +RESTATE_WORKER__SNAPSHOTS__DESTINATION=s3://restate/snapshots +RESTATE_WORKER__SNAPSHOTS__SNAPSHOT_INTERVAL_NUM_RECORDS=1000 +RESTATE_WORKER__SNAPSHOTS__AWS_REGION=local +RESTATE_WORKER__SNAPSHOTS__AWS_ENDPOINT_URL=http://minio:9000 +RESTATE_WORKER__SNAPSHOTS__AWS_ALLOW_HTTP=true + +# MinIO configuration +MINIO_VERSION=latest +MINIO_API_PORT_OVERRIDE=9000 +MINIO_CONSOLE_PORT_OVERRIDE=9001 +MINIO_ROOT_USER=minioadmin +MINIO_ROOT_PASSWORD=minioadmin + +# Timezone +TZ=UTC + +# Log level: trace, debug, info, warn, error +RESTATE_LOG_FILTER=restate=info diff --git a/src/restate-cluster/README.md b/src/restate-cluster/README.md new file mode 100644 index 0000000..a57f35b --- /dev/null +++ b/src/restate-cluster/README.md @@ -0,0 +1,280 @@ +# Restate Multi-Node Cluster + +A highly-available 3-node Restate cluster for production workloads. This configuration provides fault tolerance and automatic failover capabilities. + +## Features + +- **High Availability**: 3-node cluster can tolerate 1 node failure +- **Data Replication**: Configurable replication factor (default: 2 of 3 nodes) +- **Automatic Snapshots**: Periodic snapshots stored in MinIO (S3-compatible) +- **Load Distribution**: Multiple ingress endpoints for load balancing +- **Metadata Quorum**: Replicated metadata cluster for consistency + +## Quick Start + +1. Copy environment file: + + ```bash + cp .env.example .env + ``` + +2. Start the cluster: + + ```bash + docker compose up -d + ``` + +3. Verify cluster health: + + ```bash + # Check node 1 + curl http://localhost:9070/health + + # Check node 2 + curl http://localhost:29070/health + + # Check node 3 + curl http://localhost:39070/health + ``` + +## Architecture + +The cluster consists of: + +- **3 Restate Nodes**: Distributed workflow engines with replicated state +- **MinIO**: S3-compatible storage for partition snapshots +- **Replicated Bifrost Provider**: Log replication across nodes +- **Metadata Cluster**: Distributed metadata server on all nodes + +## Service Endpoints + +### Node 1 (Primary) + +- Ingress API: `http://localhost:8080` +- Admin API: `http://localhost:9070` +- Node Communication: Port 5122 + +### Node 2 + +- Ingress API: `http://localhost:28080` +- Admin API: `http://localhost:29070` +- Node Communication: Port 25122 + +### Node 3 + +- Ingress API: `http://localhost:38080` +- Admin API: `http://localhost:39070` +- Node Communication: Port 35122 + +### MinIO + +- API: `http://localhost:9000` +- Console: `http://localhost:9001` (admin UI) + - Username: `minioadmin` + - Password: `minioadmin` + +## Environment Variables + +### Cluster Configuration + +| Variable | Default | Description | +| ----------------------------- | ----------------- | --------------------------- | +| `RESTATE_VERSION` | `1.5.3` | Restate server version | +| `RESTATE_CLUSTER_NAME` | `restate-cluster` | Cluster name | +| `RESTATE_DEFAULT_REPLICATION` | `2` | Minimum replicas for writes | + +### Port Configuration + +Each node has three ports: + +- `NODEx_INGRESS_PORT_OVERRIDE`: Ingress API port +- `NODEx_ADMIN_PORT_OVERRIDE`: Admin API port +- `NODEx_NODE_PORT_OVERRIDE`: Node-to-node communication port + +### Snapshot Configuration + +| Variable | Default | Description | +| ---------------------------------------------------------- | ------------------------ | -------------------- | +| `RESTATE_WORKER__SNAPSHOTS__DESTINATION` | `s3://restate/snapshots` | S3 bucket path | +| `RESTATE_WORKER__SNAPSHOTS__SNAPSHOT_INTERVAL_NUM_RECORDS` | `1000` | Records per snapshot | +| `RESTATE_WORKER__SNAPSHOTS__AWS_ENDPOINT_URL` | `http://minio:9000` | S3 endpoint | + +### MinIO Configuration + +| Variable | Default | Description | +| ----------------------------- | ------------ | -------------------- | +| `MINIO_VERSION` | `latest` | MinIO version | +| `MINIO_ROOT_USER` | `minioadmin` | MinIO admin username | +| `MINIO_ROOT_PASSWORD` | `minioadmin` | MinIO admin password | +| `MINIO_API_PORT_OVERRIDE` | `9000` | MinIO API port | +| `MINIO_CONSOLE_PORT_OVERRIDE` | `9001` | MinIO console port | + +## Usage Examples + +### Deploy a Service (to any node) + +```bash +# Deploy to node 1 +curl -X POST http://localhost:9070/deployments \ + -H 'Content-Type: application/json' \ + -d '{"uri": "http://my-service:9080"}' +``` + +### Invoke Service with Load Balancing + +Use a load balancer or DNS round-robin across ingress endpoints: + +```bash +# Node 1 +curl -X POST http://localhost:8080/MyService/myMethod \ + -H 'Content-Type: application/json' \ + -d '{"key": "value"}' + +# Node 2 +curl -X POST http://localhost:28080/MyService/myMethod \ + -H 'Content-Type: application/json' \ + -d '{"key": "value"}' +``` + +### Check Cluster Status + +```bash +# From any admin API +curl http://localhost:9070/cluster +``` + +## Fault Tolerance + +The cluster is configured with: + +- **Replication Factor**: 2 (data written to 2 out of 3 nodes) +- **Quorum**: Requires majority (2/3 nodes) for metadata operations +- **Tolerance**: Can survive 1 node failure without downtime + +### Testing Failover + +Stop one node: + +```bash +docker compose stop restate-2 +``` + +The cluster continues to operate. Services remain available on nodes 1 and 3. + +## Snapshots and Backups + +Partition snapshots are automatically saved to MinIO every 1000 records. This enables: + +- Fast recovery after failures +- Backup and restore capabilities +- Reduced replay time on node restart + +### Viewing Snapshots + +Access MinIO console at `http://localhost:9001`: + +1. Login with `minioadmin` / `minioadmin` +2. Navigate to `restate` bucket +3. Browse `snapshots/` directory + +### Backup Strategy + +To backup cluster data: + +1. Stop the cluster: + + ```bash + docker compose down + ``` + +2. Backup volumes: + + ```bash + docker run --rm -v restate-cluster_restate_data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/restate-data.tar.gz -C /data . + docker run --rm -v restate-cluster_minio_data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/minio-data.tar.gz -C /data . + ``` + +## Resource Limits + +### Per Restate Node + +- CPU: 0.5-2.0 cores +- Memory: 512MB-2GB + +### MinIO Instance + +- CPU: 0.25-1.0 cores +- Memory: 128MB-512MB + +Adjust based on workload in `docker-compose.yaml`. + +## Scaling + +To add more nodes: + +1. Add new service in `docker-compose.yaml` +2. Set unique `RESTATE_NODE_NAME` and `RESTATE_FORCE_NODE_ID` +3. Add node address to `RESTATE_METADATA_CLIENT__ADDRESSES` +4. Expose unique ports +5. Set `RESTATE_AUTO_PROVISION=false` + +## Production Considerations + +- **Storage**: Use durable storage for volumes (EBS, persistent disks) +- **Network**: Ensure low latency between nodes (<10ms) +- **Monitoring**: Set up Prometheus scraping on port 9070 +- **Security**: Change MinIO credentials in production +- **Replication**: Adjust `RESTATE_DEFAULT_REPLICATION` based on cluster size +- **Snapshots**: Consider external S3 for snapshot storage + +## Monitoring + +Each node exposes metrics: + +```bash +curl http://localhost:9070/metrics # Node 1 +curl http://localhost:29070/metrics # Node 2 +curl http://localhost:39070/metrics # Node 3 +``` + +## Troubleshooting + +### Node Won't Start + +Check logs: + +```bash +docker compose logs restate-1 +``` + +Ensure all nodes can reach each other on port 5122. + +### Split Brain Prevention + +The cluster uses raft consensus with majority quorum. If nodes become partitioned, only the partition with majority (2+ nodes) remains active. + +### Data Recovery + +If data is corrupted: + +1. Stop cluster +2. Restore from volume backups +3. Restart cluster + +## Documentation + +- [Official Documentation](https://docs.restate.dev/) +- [Cluster Deployment Guide](https://docs.restate.dev/server/clusters) +- [Snapshots Documentation](https://docs.restate.dev/server/snapshots) +- [Configuration Reference](https://docs.restate.dev/references/server-config) + +## License + +This configuration is provided under the project's license. Restate is licensed under the [Business Source License 1.1](https://github.com/restatedev/restate/blob/main/LICENSE). + +## Notes + +- For single-node deployments, see [restate](../restate/) +- MinIO is used for demo purposes; use AWS S3/compatible storage in production +- The cluster automatically provisions on first start +- Node IDs are pinned to ensure consistent identity across restarts diff --git a/src/restate-cluster/README.zh.md b/src/restate-cluster/README.zh.md new file mode 100644 index 0000000..d983182 --- /dev/null +++ b/src/restate-cluster/README.zh.md @@ -0,0 +1,280 @@ +# Restate 多节点集群 + +用于生产工作负载的高可用 3 节点 Restate 集群。此配置提供容错和自动故障转移功能。 + +## 特性 + +- **高可用性**:3 节点集群可以容忍 1 个节点故障 +- **数据复制**:可配置的复制因子(默认:3 个节点中的 2 个) +- **自动快照**:定期快照存储在 MinIO(S3 兼容)中 +- **负载分配**:用于负载均衡的多个入口端点 +- **元数据仲裁**:用于一致性的复制元数据集群 + +## 快速开始 + +1. 复制环境变量文件: + + ```bash + cp .env.example .env + ``` + +2. 启动集群: + + ```bash + docker compose up -d + ``` + +3. 验证集群健康状态: + + ```bash + # 检查节点 1 + curl http://localhost:9070/health + + # 检查节点 2 + curl http://localhost:29070/health + + # 检查节点 3 + curl http://localhost:39070/health + ``` + +## 架构 + +集群由以下部分组成: + +- **3 个 Restate 节点**:具有复制状态的分布式工作流引擎 +- **MinIO**:用于分区快照的 S3 兼容存储 +- **Replicated Bifrost Provider**:跨节点的日志复制 +- **元数据集群**:所有节点上的分布式元数据服务器 + +## 服务端点 + +### 节点 1(主节点) + +- Ingress API:`http://localhost:8080` +- Admin API:`http://localhost:9070` +- 节点通信:端口 5122 + +### 节点 2 + +- Ingress API:`http://localhost:28080` +- Admin API:`http://localhost:29070` +- 节点通信:端口 25122 + +### 节点 3 + +- Ingress API:`http://localhost:38080` +- Admin API:`http://localhost:39070` +- 节点通信:端口 35122 + +### MinIO + +- API:`http://localhost:9000` +- 控制台:`http://localhost:9001`(管理 UI) + - 用户名:`minioadmin` + - 密码:`minioadmin` + +## 环境变量 + +### 集群配置 + +| 变量 | 默认值 | 说明 | +| ----------------------------- | ----------------- | -------------------- | +| `RESTATE_VERSION` | `1.5.3` | Restate 服务器版本 | +| `RESTATE_CLUSTER_NAME` | `restate-cluster` | 集群名称 | +| `RESTATE_DEFAULT_REPLICATION` | `2` | 写入所需的最小副本数 | + +### 端口配置 + +每个节点有三个端口: + +- `NODEx_INGRESS_PORT_OVERRIDE`:Ingress API 端口 +- `NODEx_ADMIN_PORT_OVERRIDE`:Admin API 端口 +- `NODEx_NODE_PORT_OVERRIDE`:节点间通信端口 + +### 快照配置 + +| 变量 | 默认值 | 说明 | +| ---------------------------------------------------------- | ------------------------ | ---------------- | +| `RESTATE_WORKER__SNAPSHOTS__DESTINATION` | `s3://restate/snapshots` | S3 存储桶路径 | +| `RESTATE_WORKER__SNAPSHOTS__SNAPSHOT_INTERVAL_NUM_RECORDS` | `1000` | 每个快照的记录数 | +| `RESTATE_WORKER__SNAPSHOTS__AWS_ENDPOINT_URL` | `http://minio:9000` | S3 端点 | + +### MinIO 配置 + +| 变量 | 默认值 | 说明 | +| ----------------------------- | ------------ | ------------------ | +| `MINIO_VERSION` | `latest` | MinIO 版本 | +| `MINIO_ROOT_USER` | `minioadmin` | MinIO 管理员用户名 | +| `MINIO_ROOT_PASSWORD` | `minioadmin` | MinIO 管理员密码 | +| `MINIO_API_PORT_OVERRIDE` | `9000` | MinIO API 端口 | +| `MINIO_CONSOLE_PORT_OVERRIDE` | `9001` | MinIO 控制台端口 | + +## 使用示例 + +### 部署服务(到任何节点) + +```bash +# 部署到节点 1 +curl -X POST http://localhost:9070/deployments \ + -H 'Content-Type: application/json' \ + -d '{"uri": "http://my-service:9080"}' +``` + +### 使用负载均衡调用服务 + +使用负载均衡器或 DNS 轮询跨入口端点: + +```bash +# 节点 1 +curl -X POST http://localhost:8080/MyService/myMethod \ + -H 'Content-Type: application/json' \ + -d '{"key": "value"}' + +# 节点 2 +curl -X POST http://localhost:28080/MyService/myMethod \ + -H 'Content-Type: application/json' \ + -d '{"key": "value"}' +``` + +### 检查集群状态 + +```bash +# 从任何管理 API +curl http://localhost:9070/cluster +``` + +## 容错能力 + +集群配置为: + +- **复制因子**:2(数据写入 3 个节点中的 2 个) +- **仲裁**:元数据操作需要多数(2/3 节点) +- **容错能力**:可以在不停机的情况下容忍 1 个节点故障 + +### 测试故障转移 + +停止一个节点: + +```bash +docker compose stop restate-2 +``` + +集群继续运行。服务在节点 1 和 3 上仍然可用。 + +## 快照和备份 + +分区快照每 1000 条记录自动保存到 MinIO。这使得: + +- 故障后快速恢复 +- 备份和恢复功能 +- 减少节点重启时的重放时间 + +### 查看快照 + +在 `http://localhost:9001` 访问 MinIO 控制台: + +1. 使用 `minioadmin` / `minioadmin` 登录 +2. 导航到 `restate` 存储桶 +3. 浏览 `snapshots/` 目录 + +### 备份策略 + +要备份集群数据: + +1. 停止集群: + + ```bash + docker compose down + ``` + +2. 备份卷: + + ```bash + docker run --rm -v restate-cluster_restate_data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/restate-data.tar.gz -C /data . + docker run --rm -v restate-cluster_minio_data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/minio-data.tar.gz -C /data . + ``` + +## 资源限制 + +### 每个 Restate 节点 + +- CPU:0.5-2.0 核心 +- 内存:512MB-2GB + +### MinIO 实例 + +- CPU:0.25-1.0 核心 +- 内存:128MB-512MB + +根据 `docker-compose.yaml` 中的工作负载进行调整。 + +## 扩展 + +要添加更多节点: + +1. 在 `docker-compose.yaml` 中添加新服务 +2. 设置唯一的 `RESTATE_NODE_NAME` 和 `RESTATE_FORCE_NODE_ID` +3. 将节点地址添加到 `RESTATE_METADATA_CLIENT__ADDRESSES` +4. 暴露唯一端口 +5. 设置 `RESTATE_AUTO_PROVISION=false` + +## 生产注意事项 + +- **存储**:使用持久存储卷(EBS、持久磁盘) +- **网络**:确保节点之间的低延迟(<10ms) +- **监控**:在端口 9070 上设置 Prometheus 抓取 +- **安全**:在生产环境中更改 MinIO 凭据 +- **复制**:根据集群大小调整 `RESTATE_DEFAULT_REPLICATION` +- **快照**:考虑使用外部 S3 进行快照存储 + +## 监控 + +每个节点都公开指标: + +```bash +curl http://localhost:9070/metrics # 节点 1 +curl http://localhost:29070/metrics # 节点 2 +curl http://localhost:39070/metrics # 节点 3 +``` + +## 故障排除 + +### 节点无法启动 + +检查日志: + +```bash +docker compose logs restate-1 +``` + +确保所有节点可以在端口 5122 上相互访问。 + +### 防止脑裂 + +集群使用 raft 共识和多数仲裁。如果节点被分区,只有具有多数(2+ 节点)的分区保持活动状态。 + +### 数据恢复 + +如果数据损坏: + +1. 停止集群 +2. 从卷备份恢复 +3. 重启集群 + +## 文档 + +- [官方文档](https://docs.restate.dev/) +- [集群部署指南](https://docs.restate.dev/server/clusters) +- [快照文档](https://docs.restate.dev/server/snapshots) +- [配置参考](https://docs.restate.dev/references/server-config) + +## 许可证 + +此配置在项目许可证下提供。Restate 采用 [Business Source License 1.1](https://github.com/restatedev/restate/blob/main/LICENSE) 许可。 + +## 注意事项 + +- 对于单节点部署,请参见 [restate](../restate/) +- MinIO 用于演示目的;在生产环境中使用 AWS S3/兼容存储 +- 集群在首次启动时自动配置 +- 节点 ID 被固定以确保重启时的一致标识 diff --git a/src/restate-cluster/docker-compose.yaml b/src/restate-cluster/docker-compose.yaml new file mode 100644 index 0000000..ef94efa --- /dev/null +++ b/src/restate-cluster/docker-compose.yaml @@ -0,0 +1,144 @@ +# Restate Multi-Node Cluster +# A highly-available distributed workflow engine with 3-node cluster +# Documentation: https://docs.restate.dev/server/clusters + +x-defaults: &defaults + restart: unless-stopped + logging: + driver: json-file + options: + max-size: 100m + max-file: "3" + +x-environment: &common-env + TZ: ${TZ:-UTC} + RESTATE_CLUSTER_NAME: ${RESTATE_CLUSTER_NAME:-restate-cluster} + RESTATE_LOG_FILTER: ${RESTATE_LOG_FILTER:-restate=info} + # Minimum replicas required to accept writes (2 out of 3 nodes) + RESTATE_DEFAULT_REPLICATION: ${RESTATE_DEFAULT_REPLICATION:-2} + # Addresses where nodes can reach each other + RESTATE_METADATA_CLIENT__ADDRESSES: ${RESTATE_METADATA_CLIENT__ADDRESSES:-["http://restate-1:5122","http://restate-2:5122","http://restate-3:5122"]} + # Snapshot configuration + RESTATE_WORKER__SNAPSHOTS__DESTINATION: ${RESTATE_WORKER__SNAPSHOTS__DESTINATION:-s3://restate/snapshots} + RESTATE_WORKER__SNAPSHOTS__SNAPSHOT_INTERVAL_NUM_RECORDS: ${RESTATE_WORKER__SNAPSHOTS__SNAPSHOT_INTERVAL_NUM_RECORDS:-1000} + RESTATE_WORKER__SNAPSHOTS__AWS_REGION: ${RESTATE_WORKER__SNAPSHOTS__AWS_REGION:-local} + RESTATE_WORKER__SNAPSHOTS__AWS_ENDPOINT_URL: ${RESTATE_WORKER__SNAPSHOTS__AWS_ENDPOINT_URL:-http://minio:9000} + RESTATE_WORKER__SNAPSHOTS__AWS_ALLOW_HTTP: ${RESTATE_WORKER__SNAPSHOTS__AWS_ALLOW_HTTP:-true} + RESTATE_WORKER__SNAPSHOTS__AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-minioadmin} + RESTATE_WORKER__SNAPSHOTS__AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:-minioadmin} + +x-restate: &restate-defaults + <<: *defaults + image: restatedev/restate:${RESTATE_VERSION:-1.5.3} + volumes: + - restate_data:/restate-data + deploy: + resources: + limits: + cpus: '2.00' + memory: 2G + reservations: + cpus: '0.50' + memory: 512M + +services: + restate-1: + <<: *restate-defaults + ports: + - "${NODE1_INGRESS_PORT_OVERRIDE:-8080}:8080" # Ingress API + - "${NODE1_ADMIN_PORT_OVERRIDE:-9070}:9070" # Admin API + - "${NODE1_NODE_PORT_OVERRIDE:-5122}:5122" # Node-to-node + environment: + <<: *common-env + RESTATE_NODE_NAME: restate-1 + RESTATE_FORCE_NODE_ID: 1 + RESTATE_ADVERTISED_ADDRESS: ${RESTATE_NODE1_ADVERTISED_ADDRESS:-http://restate-1:5122} + RESTATE_AUTO_PROVISION: "true" # Only first node provisions cluster + healthcheck: + test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:9070/health || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + depends_on: + minio: + condition: service_healthy + + restate-2: + <<: *restate-defaults + ports: + - "${NODE2_INGRESS_PORT_OVERRIDE:-28080}:8080" + - "${NODE2_ADMIN_PORT_OVERRIDE:-29070}:9070" + - "${NODE2_NODE_PORT_OVERRIDE:-25122}:5122" + environment: + <<: *common-env + RESTATE_NODE_NAME: restate-2 + RESTATE_FORCE_NODE_ID: 2 + RESTATE_ADVERTISED_ADDRESS: ${RESTATE_NODE2_ADVERTISED_ADDRESS:-http://restate-2:5122} + RESTATE_AUTO_PROVISION: "false" + healthcheck: + test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:9070/health || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + depends_on: + minio: + condition: service_healthy + restate-1: + condition: service_healthy + + restate-3: + <<: *restate-defaults + ports: + - "${NODE3_INGRESS_PORT_OVERRIDE:-38080}:8080" + - "${NODE3_ADMIN_PORT_OVERRIDE:-39070}:9070" + - "${NODE3_NODE_PORT_OVERRIDE:-35122}:5122" + environment: + <<: *common-env + RESTATE_NODE_NAME: restate-3 + RESTATE_FORCE_NODE_ID: 3 + RESTATE_ADVERTISED_ADDRESS: ${RESTATE_NODE3_ADVERTISED_ADDRESS:-http://restate-3:5122} + RESTATE_AUTO_PROVISION: "false" + healthcheck: + test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:9070/health || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + depends_on: + minio: + condition: service_healthy + restate-1: + condition: service_healthy + + minio: + <<: *defaults + image: quay.io/minio/minio:${MINIO_VERSION:-latest} + command: ["sh", "-c", "mkdir -p /data/restate && /usr/bin/minio server --quiet /data --console-address :9001"] + ports: + - "${MINIO_API_PORT_OVERRIDE:-9000}:9000" + - "${MINIO_CONSOLE_PORT_OVERRIDE:-9001}:9001" + environment: + - MINIO_ROOT_USER=${MINIO_ROOT_USER:-minioadmin} + - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-minioadmin} + volumes: + - minio_data:/data + healthcheck: + test: ["CMD", "mc", "ready", "local"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s + deploy: + resources: + limits: + cpus: '1.00' + memory: 512M + reservations: + cpus: '0.25' + memory: 128M + +volumes: + restate_data: + minio_data: diff --git a/src/restate/.env.example b/src/restate/.env.example new file mode 100644 index 0000000..bcfd48e --- /dev/null +++ b/src/restate/.env.example @@ -0,0 +1,13 @@ +# Restate version +RESTATE_VERSION=1.5.3 + +# Port overrides (host:container) +INGRESS_PORT_OVERRIDE=8080 +ADMIN_PORT_OVERRIDE=9070 +NODE_PORT_OVERRIDE=5122 + +# Timezone +TZ=UTC + +# Log level: trace, debug, info, warn, error +RESTATE_LOG_FILTER=restate=info diff --git a/src/restate/README.md b/src/restate/README.md new file mode 100644 index 0000000..12f3151 --- /dev/null +++ b/src/restate/README.md @@ -0,0 +1,122 @@ +# Restate Single-Node Server + +Restate is a distributed workflow engine for stateful services that provides durable execution, reliable messaging, and state management out of the box. + +## Features + +- **Durable Execution**: Automatically persist execution state and resume on failures +- **Reliable Messaging**: Built-in message delivery guarantees +- **State Management**: Strongly consistent state with minimal overhead +- **Service Discovery**: Automatic service registration and discovery +- **Admin API**: Rich API for monitoring and managing services + +## Quick Start + +1. Copy environment file: + + ```bash + cp .env.example .env + ``` + +2. Start the service: + + ```bash + docker compose up -d + ``` + +3. Verify the service is running: + + ```bash + curl http://localhost:9070/health + ``` + +## Service Endpoints + +- **Ingress API**: `http://localhost:8080` - Main API for invoking services +- **Admin API**: `http://localhost:9070` - Management and monitoring API +- **Node Communication**: Port 5122 (internal) + +## Environment Variables + +| Variable | Default | Description | +| ----------------------- | -------------- | --------------------------------------- | +| `RESTATE_VERSION` | `1.5.3` | Restate server version | +| `INGRESS_PORT_OVERRIDE` | `8080` | Ingress API port | +| `ADMIN_PORT_OVERRIDE` | `9070` | Admin API port | +| `NODE_PORT_OVERRIDE` | `5122` | Node-to-node communication port | +| `RESTATE_LOG_FILTER` | `restate=info` | Log level (trace/debug/info/warn/error) | +| `TZ` | `UTC` | Timezone | + +## Usage Examples + +### Deploy a Service + +```bash +# Register a service endpoint +curl -X POST http://localhost:9070/deployments \ + -H 'Content-Type: application/json' \ + -d '{"uri": "http://my-service:9080"}' +``` + +### List Deployed Services + +```bash +curl http://localhost:9070/services +``` + +### Invoke a Service + +```bash +curl -X POST http://localhost:8080/MyService/myMethod \ + -H 'Content-Type: application/json' \ + -d '{"key": "value"}' +``` + +## Data Persistence + +Restate data is stored in the named volume `restate_data`. The server uses node name `restate-1` for data consistency across restarts. + +To reset the server and start fresh: + +```bash +docker compose down -v +``` + +## Resource Limits + +- CPU: 0.5-2.0 cores +- Memory: 512MB-2GB + +Adjust these limits in `docker-compose.yaml` based on your workload. + +## Monitoring + +Check server health: + +```bash +curl http://localhost:9070/health +``` + +View server metrics (Prometheus format): + +```bash +curl http://localhost:9070/metrics +``` + +## Documentation + +- [Official Documentation](https://docs.restate.dev/) +- [Deployment Guide](https://docs.restate.dev/server/deploy/docker) +- [Configuration Reference](https://docs.restate.dev/references/server-config) +- [Architecture](https://docs.restate.dev/references/architecture) + +## License + +This configuration is provided under the project's license. Restate is licensed under the [Business Source License 1.1](https://github.com/restatedev/restate/blob/main/LICENSE). + +## Notes + +- For production deployments, consider using a [Restate cluster](../restate-cluster/) for high availability +- Ensure the data directory is on durable storage in production +- The `--node-name` flag ensures consistent data restoration across restarts +- For cluster deployments, see the [restate-cluster](../restate-cluster/) configuration diff --git a/src/restate/README.zh.md b/src/restate/README.zh.md new file mode 100644 index 0000000..676fa1e --- /dev/null +++ b/src/restate/README.zh.md @@ -0,0 +1,122 @@ +# Restate 单节点服务器 + +Restate 是一个用于有状态服务的分布式工作流引擎,提供开箱即用的持久化执行、可靠消息传递和状态管理。 + +## 特性 + +- **持久化执行**:自动持久化执行状态并在失败时恢复 +- **可靠消息传递**:内置消息传递保证 +- **状态管理**:具有最小开销的强一致性状态 +- **服务发现**:自动服务注册和发现 +- **管理 API**:丰富的监控和管理服务 API + +## 快速开始 + +1. 复制环境变量文件: + + ```bash + cp .env.example .env + ``` + +2. 启动服务: + + ```bash + docker compose up -d + ``` + +3. 验证服务运行: + + ```bash + curl http://localhost:9070/health + ``` + +## 服务端点 + +- **Ingress API**:`http://localhost:8080` - 调用服务的主要 API +- **Admin API**:`http://localhost:9070` - 管理和监控 API +- **节点通信**:端口 5122(内部) + +## 环境变量 + +| 变量 | 默认值 | 说明 | +| ----------------------- | -------------- | --------------------------------------- | +| `RESTATE_VERSION` | `1.5.3` | Restate 服务器版本 | +| `INGRESS_PORT_OVERRIDE` | `8080` | Ingress API 端口 | +| `ADMIN_PORT_OVERRIDE` | `9070` | Admin API 端口 | +| `NODE_PORT_OVERRIDE` | `5122` | 节点间通信端口 | +| `RESTATE_LOG_FILTER` | `restate=info` | 日志级别(trace/debug/info/warn/error) | +| `TZ` | `UTC` | 时区 | + +## 使用示例 + +### 部署服务 + +```bash +# 注册服务端点 +curl -X POST http://localhost:9070/deployments \ + -H 'Content-Type: application/json' \ + -d '{"uri": "http://my-service:9080"}' +``` + +### 列出已部署的服务 + +```bash +curl http://localhost:9070/services +``` + +### 调用服务 + +```bash +curl -X POST http://localhost:8080/MyService/myMethod \ + -H 'Content-Type: application/json' \ + -d '{"key": "value"}' +``` + +## 数据持久化 + +Restate 数据存储在命名卷 `restate_data` 中。服务器使用节点名称 `restate-1` 以确保重启时的数据一致性。 + +要重置服务器并重新开始: + +```bash +docker compose down -v +``` + +## 资源限制 + +- CPU:0.5-2.0 核心 +- 内存:512MB-2GB + +根据工作负载在 `docker-compose.yaml` 中调整这些限制。 + +## 监控 + +检查服务器健康状态: + +```bash +curl http://localhost:9070/health +``` + +查看服务器指标(Prometheus 格式): + +```bash +curl http://localhost:9070/metrics +``` + +## 文档 + +- [官方文档](https://docs.restate.dev/) +- [部署指南](https://docs.restate.dev/server/deploy/docker) +- [配置参考](https://docs.restate.dev/references/server-config) +- [架构](https://docs.restate.dev/references/architecture) + +## 许可证 + +此配置在项目许可证下提供。Restate 采用 [Business Source License 1.1](https://github.com/restatedev/restate/blob/main/LICENSE) 许可。 + +## 注意事项 + +- 对于生产部署,考虑使用 [Restate 集群](../restate-cluster/) 以实现高可用性 +- 在生产环境中确保数据目录位于持久存储上 +- `--node-name` 参数确保重启时的一致数据恢复 +- 对于集群部署,请参见 [restate-cluster](../restate-cluster/) 配置 diff --git a/src/restate/docker-compose.yaml b/src/restate/docker-compose.yaml new file mode 100644 index 0000000..31fed8a --- /dev/null +++ b/src/restate/docker-compose.yaml @@ -0,0 +1,43 @@ +# Restate Single-Node Server +# A distributed workflow engine for stateful services +# Documentation: https://docs.restate.dev/ + +x-defaults: &defaults + restart: unless-stopped + logging: + driver: json-file + options: + max-size: 100m + max-file: "3" + +services: + restate: + <<: *defaults + image: restatedev/restate:${RESTATE_VERSION:-1.5.3} + command: ["--node-name=restate-1"] + ports: + - "${INGRESS_PORT_OVERRIDE:-8080}:8080" # Ingress API + - "${ADMIN_PORT_OVERRIDE:-9070}:9070" # Admin API + - "${NODE_PORT_OVERRIDE:-5122}:5122" # Node-to-node communication + volumes: + - restate_data:/restate-data + environment: + - TZ=${TZ:-UTC} + - RESTATE_LOG_FILTER=${RESTATE_LOG_FILTER:-restate=info} + healthcheck: + test: ["CMD", "sh", "-c", "wget --no-verbose --tries=1 --spider http://localhost:9070/health || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + cpus: '2.00' + memory: 2G + reservations: + cpus: '0.50' + memory: 512M + +volumes: + restate_data: diff --git a/src/rocketmq/docker-compose.yaml b/src/rocketmq/docker-compose.yaml index d9eeb67..5c9fbcb 100644 --- a/src/rocketmq/docker-compose.yaml +++ b/src/rocketmq/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: namesrv: - <<: *default + <<: *defaults image: apache/rocketmq:${ROCKETMQ_VERSION:-5.3.1} command: sh mqnamesrv environment: @@ -34,7 +34,7 @@ services: start_period: 30s broker: - <<: *default + <<: *defaults image: apache/rocketmq:${ROCKETMQ_VERSION:-5.3.1} command: sh mqbroker -n namesrv:9876 -c /home/rocketmq/broker.conf environment: @@ -67,7 +67,7 @@ services: start_period: 30s dashboard: - <<: *default + <<: *defaults image: apacherocketmq/rocketmq-dashboard:${ROCKETMQ_DASHBOARD_VERSION:-2.0.0} environment: TZ: ${TZ:-UTC} diff --git a/src/searxng/docker-compose.yaml b/src/searxng/docker-compose.yaml index a08e85a..cff55eb 100644 --- a/src/searxng/docker-compose.yaml +++ b/src/searxng/docker-compose.yaml @@ -1,5 +1,5 @@ # https://github.com/searxng/searxng-docker/blob/master/docker-compose.yaml -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -9,7 +9,7 @@ x-default: &default services: caddy: - <<: *default + <<: *defaults image: docker.io/library/caddy:${CADDY_VERSION:-2-alpine} network_mode: host volumes: @@ -40,7 +40,7 @@ services: memory: 64M redis: - <<: *default + <<: *defaults image: docker.io/valkey/valkey:${VALKEY_VERSION:-8-alpine} command: valkey-server --save 30 1 --loglevel warning networks: @@ -69,7 +69,7 @@ services: memory: 64M searxng: - <<: *default + <<: *defaults image: docker.io/searxng/searxng:${SEARXNG_VERSION:-2025.1.20-1ce14ef99} networks: - searxng diff --git a/src/stable-diffusion-webui-docker/docker-compose.yaml b/src/stable-diffusion-webui-docker/docker-compose.yaml index 675c03e..ada9943 100644 --- a/src/stable-diffusion-webui-docker/docker-compose.yaml +++ b/src/stable-diffusion-webui-docker/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: stable-diffusion-webui: - <<: *default + <<: *defaults image: ghcr.io/absolutelyludicrous/sdnext:${SD_WEBUI_VERSION:-latest} ports: - "${SD_WEBUI_PORT_OVERRIDE:-7860}:7860" diff --git a/src/stirling-pdf/docker-compose.yaml b/src/stirling-pdf/docker-compose.yaml index ea7cd77..89a2add 100644 --- a/src/stirling-pdf/docker-compose.yaml +++ b/src/stirling-pdf/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: stirling-pdf: - <<: *default + <<: *defaults image: stirlingtools/stirling-pdf:${STIRLING_VERSION:-latest} ports: - "${PORT_OVERRIDE:-8080}:8080" diff --git a/src/temporal/docker-compose.yaml b/src/temporal/docker-compose.yaml index 5dc60fc..14b989d 100644 --- a/src/temporal/docker-compose.yaml +++ b/src/temporal/docker-compose.yaml @@ -26,7 +26,7 @@ # # License: MIT (https://github.com/temporalio/temporal/blob/master/LICENSE) -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -36,7 +36,7 @@ x-default: &default services: temporal: - <<: *default + <<: *defaults image: temporalio/auto-setup:${TEMPORAL_VERSION:-1.24.2} container_name: temporal ports: @@ -84,7 +84,7 @@ services: memory: "${TEMPORAL_MEMORY_RESERVATION:-512M}" temporal-ui: - <<: *default + <<: *defaults image: temporalio/ui:${TEMPORAL_UI_VERSION:-2.28.0} container_name: temporal-ui ports: @@ -113,7 +113,7 @@ services: memory: "${TEMPORAL_UI_MEMORY_RESERVATION:-128M}" temporal-admin-tools: - <<: *default + <<: *defaults image: temporalio/admin-tools:${TEMPORAL_VERSION:-1.24.2} container_name: temporal-admin-tools profiles: @@ -137,7 +137,7 @@ services: memory: "256M" postgres: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-16-alpine} container_name: temporal-postgres environment: diff --git a/src/tidb/docker-compose.yaml b/src/tidb/docker-compose.yaml index d30a0cc..11d9a35 100644 --- a/src/tidb/docker-compose.yaml +++ b/src/tidb/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: pd: - <<: *default + <<: *defaults image: pingcap/pd:${TIDB_VERSION:-v8.5.0} command: - --name=pd @@ -39,7 +39,7 @@ services: start_period: 30s tikv: - <<: *default + <<: *defaults image: pingcap/tikv:${TIDB_VERSION:-v8.5.0} command: - --addr=0.0.0.0:20160 @@ -71,7 +71,7 @@ services: start_period: 60s tidb: - <<: *default + <<: *defaults image: pingcap/tidb:${TIDB_VERSION:-v8.5.0} command: - --store=tikv diff --git a/src/tikv/docker-compose.yaml b/src/tikv/docker-compose.yaml index 7c902ca..fc2e5c4 100644 --- a/src/tikv/docker-compose.yaml +++ b/src/tikv/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: pd: - <<: *default + <<: *defaults image: pingcap/pd:${TIKV_VERSION:-v8.5.0} command: - --name=pd @@ -40,7 +40,7 @@ services: start_period: 30s tikv: - <<: *default + <<: *defaults image: pingcap/tikv:${TIKV_VERSION:-v8.5.0} command: - --addr=0.0.0.0:20160 diff --git a/src/valkey-cluster/docker-compose.yaml b/src/valkey-cluster/docker-compose.yaml index 296ee57..40519f9 100644 --- a/src/valkey-cluster/docker-compose.yaml +++ b/src/valkey-cluster/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -7,7 +7,7 @@ x-default: &default max-file: "3" x-valkey-node: &valkey-node - <<: *default + <<: *defaults image: valkey/valkey:${VALKEY_VERSION:-8.0-alpine} environment: - TZ=${TZ:-UTC} @@ -90,7 +90,7 @@ services: - valkey_data_6:/data valkey-cluster-init: - <<: *default + <<: *defaults image: valkey/valkey:${VALKEY_VERSION:-8.0-alpine} environment: - TZ=${TZ:-UTC} diff --git a/src/valkey/docker-compose.yaml b/src/valkey/docker-compose.yaml index 46a6d13..a7b3024 100644 --- a/src/valkey/docker-compose.yaml +++ b/src/valkey/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: valkey: - <<: *default + <<: *defaults image: valkey/valkey:${VALKEY_VERSION:-8.0-alpine} ports: - "${VALKEY_PORT_OVERRIDE:-6379}:6379" diff --git a/src/verdaccio/docker-compose.yaml b/src/verdaccio/docker-compose.yaml index d09bf66..5c8340c 100644 --- a/src/verdaccio/docker-compose.yaml +++ b/src/verdaccio/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: verdaccio: - <<: *default + <<: *defaults image: verdaccio/verdaccio:${VERDACCIO_VERSION:-6.1.2} networks: - verdaccio diff --git a/src/vllm/docker-compose.yaml b/src/vllm/docker-compose.yaml index c1a7906..e268668 100644 --- a/src/vllm/docker-compose.yaml +++ b/src/vllm/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: vllm: - <<: *default + <<: *defaults image: vllm/vllm-openai:${VLLM_VERSION:-v0.8.0} ports: - "${VLLM_PORT_OVERRIDE:-8000}:8000" diff --git a/src/windmill/docker-compose.yaml b/src/windmill/docker-compose.yaml index 4e9627f..6b6e3db 100644 --- a/src/windmill/docker-compose.yaml +++ b/src/windmill/docker-compose.yaml @@ -26,7 +26,7 @@ # # License: AGPLv3 (https://github.com/windmill-labs/windmill/blob/main/LICENSE) -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -36,7 +36,7 @@ x-default: &default services: windmill-server: - <<: *default + <<: *defaults image: ghcr.io/windmill-labs/windmill:${WINDMILL_VERSION:-main} container_name: windmill-server ports: @@ -81,7 +81,7 @@ services: memory: "${WINDMILL_SERVER_MEMORY_RESERVATION:-256M}" windmill-worker: - <<: *default + <<: *defaults image: ghcr.io/windmill-labs/windmill:${WINDMILL_VERSION:-main} container_name: windmill-worker environment: @@ -115,7 +115,7 @@ services: memory: "${WINDMILL_WORKER_MEMORY_RESERVATION:-512M}" postgres: - <<: *default + <<: *defaults image: postgres:${POSTGRES_VERSION:-16-alpine} container_name: windmill-postgres environment: @@ -142,7 +142,7 @@ services: # Optional: LSP service for code intelligence windmill-lsp: - <<: *default + <<: *defaults image: ghcr.io/windmill-labs/windmill-lsp:${WINDMILL_LSP_VERSION:-latest} container_name: windmill-lsp profiles: diff --git a/src/zookeeper/docker-compose.yaml b/src/zookeeper/docker-compose.yaml index 7828a57..1f643af 100644 --- a/src/zookeeper/docker-compose.yaml +++ b/src/zookeeper/docker-compose.yaml @@ -1,4 +1,4 @@ -x-default: &default +x-defaults: &defaults restart: unless-stopped logging: driver: json-file @@ -8,7 +8,7 @@ x-default: &default services: zookeeper: - <<: *default + <<: *defaults image: zookeeper:${ZOOKEEPER_VERSION:-3.9.3} ports: - "${ZOOKEEPER_CLIENT_PORT_OVERRIDE:-2181}:2181"