Files
mono/components/extension-sdk/templates/docker-compose.snippet.yaml
T
coopops 883e597d40
Typecheck / controller (pull_request) Has been cancelled
Typecheck / desktop (pull_request) Has been cancelled
[E10-2] feat(extension-sdk): @coopenomics/extension-sdk — Nest-template subgraph'а
Epic 10 Story 10.2 — SDK для разработки backend-расширений Apollo Federation v2
subgraph'ов экосистемы кооператива.

Что внутри:
- ExtensionFederationModule.forRoot() — готовый GraphQL модуль с
  ApolloFederationDriver + autoSchemaFile.federation: 2
- ExtensionAuthModule.forRoot({ secret }) — passport-jwt стратегия,
  валидирует токен который Apollo Gateway forward'ит в Authorization-header.
- ExtensionJwtAuthGuard — guard для GraphQL resolver'ов
- SharedCooperator/SharedCooperative/SharedAccount — federation v2 stub'ы
  на core-entity для cross-extension references (@key + @external)
- HealthController GET /_health — обязательный для orchestrator'а
- loadExtensionConfig() — fail-fast загрузчик env'ов

Templates:
- Dockerfile multi-stage (builder + runtime + wget healthcheck)
- docker-compose.snippet.yaml — шаблон service'а для orchestrator'а

Контракт фиксирован Epic 10 PRD (apps-catalog/docs/epics/E10-federation-runtime.md)
и Architecture v3 (blago req 8b-architecture-v3-runtime-federation).
2026-06-03 18:33:24 +00:00

31 lines
1.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Snippet, который orchestrator добавляет в общий docker-compose.yaml DC.
#
# Имя service'а = `ext-<packageId-без-scope>` (например `ext-chatcoop`).
# Image берётся из manifest пакета (`coopenomics.backend.image`).
# Порт subgraph'а внутри docker-network проброшен НЕ на хост — gateway
# обращается к нему через service name + internal port.
services:
ext-${EXT_NAME}:
image: ${EXT_IMAGE}
container_name: ext-${EXT_NAME}
restart: unless-stopped
environment:
SUBGRAPH_PORT: ${EXT_PORT}
JWT_SECRET: ${JWT_SECRET}
COOPNAME: ${COOPNAME}
DATABASE_URL: ${EXT_DATABASE_URL}
CORE_GRAPHQL_URL: http://coopback:3000/v1/graphql
networks:
- coopnet
healthcheck:
test: ['CMD', 'wget', '--quiet', '--tries=1', '--spider', 'http://localhost:${EXT_PORT}/_health']
interval: 10s
timeout: 3s
retries: 3
start_period: 20s
networks:
coopnet:
external: true