From 6ad8676cf18c9856fc475b7c6b120f49d87697a3 Mon Sep 17 00:00:00 2001 From: "a.tolmachev" Date: Wed, 25 Mar 2026 22:22:22 +0300 Subject: [PATCH] fix: make published service host configurable --- .env.example | 1 + TASKS.md | 12 ++++++------ docker-compose.yml | 6 +++--- docs/deployment.md | 9 ++++++++- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index 4836244..ba7672f 100644 --- a/.env.example +++ b/.env.example @@ -3,6 +3,7 @@ POSTGRES_USER=rmcp POSTGRES_PASSWORD=change-me MCPAAS_DATABASE_URL=postgres://rmcp:change-me@postgres:5432/rmcp MCPAAS_STORAGE_ROOT=/var/lib/rmcp/storage +MCPAAS_PUBLISH_HOST=127.0.0.1 MCPAAS_ADMIN_BIND=0.0.0.0:3001 MCPAAS_MCP_BIND=0.0.0.0:3002 MCPAAS_MCP_REFRESH_MS=5000 diff --git a/TASKS.md b/TASKS.md index 45f97a5..2ca7024 100644 --- a/TASKS.md +++ b/TASKS.md @@ -2,17 +2,17 @@ ## Current -### `feat/ui-polish` +### `feat/publish-host-config` Status: completed DoD: -- UI больше не выглядит `REST-only`, если backend уже поддерживает `REST`, `GraphQL` и `gRPC` -- create flow позволяет собрать operation для всех поддерживаемых протоколов -- detail screen показывает protocol-specific metadata и не сводится к одному длинному сырому столбцу -- для `gRPC` доступен descriptor upload и просмотр unary services/methods -- UI build и UI tests проходят в CI-эквивалентном режиме +- публикация портов в `docker-compose` не завязана жестко на `127.0.0.1` +- отдельный reverse proxy на другом хосте может достучаться до `ui`, `admin-api` и `mcp-server` +- локальный сценарий с loopback тоже остается доступным через env-конфиг +- deployment docs и `.env.example` синхронизированы с новой моделью +- после фикса внешний reverse proxy перестает получать `502` из-за недоступного upstream ## Next diff --git a/docker-compose.yml b/docker-compose.yml index 4d8b228..b906b12 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,7 +33,7 @@ services: volumes: - artifact_storage:${MCPAAS_STORAGE_ROOT:-/var/lib/rmcp/storage} ports: - - "127.0.0.1:3001:3001" + - "${MCPAAS_PUBLISH_HOST:-127.0.0.1}:3001:3001" healthcheck: test: ["CMD", "curl", "--fail", "http://127.0.0.1:3001/health"] interval: 15s @@ -57,7 +57,7 @@ services: volumes: - artifact_storage:${MCPAAS_STORAGE_ROOT:-/var/lib/rmcp/storage} ports: - - "127.0.0.1:3002:3002" + - "${MCPAAS_PUBLISH_HOST:-127.0.0.1}:3002:3002" healthcheck: test: ["CMD", "curl", "--fail", "http://127.0.0.1:3002/health"] interval: 15s @@ -70,7 +70,7 @@ services: dockerfile: apps/ui/Dockerfile restart: unless-stopped ports: - - "127.0.0.1:3000:3000" + - "${MCPAAS_PUBLISH_HOST:-127.0.0.1}:3000:3000" healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/"] interval: 15s diff --git a/docs/deployment.md b/docs/deployment.md index bbb0378..6914754 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -163,10 +163,17 @@ services: - поднимать `postgres`, `admin-api`, `mcp-server`, `ui`; - использовать env vars вместо hardcoded config; - иметь persistent storage для БД и artifacts; -- публиковать `ui`, `admin-api` и `mcp-server` только на loopback, если перед ними уже стоит reverse proxy; +- поддерживать настраиваемый bind host для published ports; +- публиковать `ui`, `admin-api` и `mcp-server` на loopback, если reverse proxy живет на том же хосте; +- публиковать `ui`, `admin-api` и `mcp-server` на LAN bind address или `0.0.0.0`, если reverse proxy вынесен на отдельный хост; - не публиковать внутренние сервисы наружу без необходимости; - содержать healthchecks. +Практически это должно быть управляемо через env вроде `MCPAAS_PUBLISH_HOST`: + +- `127.0.0.1` для local reverse proxy на том же Linux host; +- конкретный внутренний IP или `0.0.0.0` для отдельного центрального reverse proxy в LAN. + ## 10. Healthchecks Нужны как минимум: