Files
Enterprise-MCP-Service-Bus/RI/deploy/docker/Dockerfile
2026-09-14 08:18:53 -03:00

34 lines
1.3 KiB
Docker

# Shared image for every RI service (Gateway, example MCP servers, ...).
# docker-compose.yml selects the process to run per service via `command:`.
#
# Verified with a real `docker build`/`docker compose up` (RI/README.md, "O
# que foi validado com Docker") -- this image originally omitted `config ./config`
# below, which built fine but made the Gateway fail closed at startup
# (`ConfigError`: config/clients not found -- `load_yaml_models`, EP-01/EP-04),
# since the container never had client registrations/profiles to load.
FROM python:3.12-slim AS base
WORKDIR /app
# System deps kept minimal on purpose -- this image has no compiled
# dependencies today; add build-essential here if that changes.
COPY pyproject.toml ./
COPY src ./src
COPY services ./services
# The Gateway loads client registrations/profiles/backend-credential config
# from `config/` at startup (EP-01/EP-04/EP-07, GatewayConfig.config_dir).
COPY config ./config
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir -e ".[otlp]"
# Runs as a non-root user; every RI service binds 0.0.0.0 inside its own
# container network namespace, never the host network directly.
RUN useradd --create-home --uid 10001 emcp
USER emcp
EXPOSE 8000 8100 8101
# Overridden per-service by docker-compose.yml `command:`.
CMD ["python3", "-m", "emcp_bus.gateway.server"]