Deployment

infrastrActure is deployed as a Docker service. In the current production layout it runs in Swarm and is typically built on a dedicated builder host.

Deployment Shapes

ModeFile
local / standalonedocker-compose.yml
swarm / templatedocker-stack.yml
live infra stack/opt/infrastructure/stacks/mcp-stack.yml

Live Naming

After the runtime rename, the operational surface is:

ItemName
repoinfrastrActure
imageinfrastracture
stack servicemcp_infrastracture
env file.env.infrastracture

The lowercase infrastracture image/service identifier is intentional for Docker compatibility.

Required Dependencies

  • Docker Engine
  • PostgreSQL
  • MinIO for file-backed features
  • registry access for runtime images
  • secrets for shared integrations

Key Environment Variables

VariablePurpose
DB_* / POSTGRES_*database connectivity
INFRASTRACTURE_PUBLIC_URLpublic base URL for callbacks and docs
INFRASTRACTURE_URLinternal service base URL
MCP_CONTAINER_HOSThost inserted into runtime URLs
CUSTOM_REGISTRY_URLprivate image registry
MINIO_*object storage

Swarm Flow

Current Operational Pattern

Build and deploy are usually run from the builder workflow rather than ad hoc local builds.

Relevant script:

That script now targets:

  • repo path: /mnt/shared/Projects/infrastrActure
  • image: ${REGISTRY_URL}/infrastracture:<tag>
  • service: mcp_infrastracture

Health and Startup

The entrypoint:

  1. resolves *_FILE secrets
  2. waits for PostgreSQL
  3. applies migrations
  4. starts the Node service

Health endpoints:

PathPurpose
/healthliveness
/statusoperational status

Important Operational Caveat

The live PostgreSQL schema name is still mcp_manager. That is legacy storage naming, not a failed rename. Do not casually change it in deployment config without a dedicated migration.