- Remove all DevOpsMCP/aiohttp runtime deps from BicepModuleCatalog
- BicepModuleCatalog.load() reads bicep_modules_catalog.json from disk at startup (sync)
- Fix _load_catalog: catalog uses dict {path: {versions, schema}} not a list
- server.py: call BicepModuleCatalog.load() synchronously, not via asyncio.gather
- Dockerfile: COPY bicep_modules_catalog.json into both builder + runtime stages
- Health endpoint now reports bicep_modules: 27
Verified locally: make run-quick → health returns pypi_packages:40 bicep_modules:27
Dockerfile:
- Final stage now FROM mcr.microsoft.com/dotnet/runtime:8.0 instead of python:3.12-slim
+ MS apt repo. Reason: packages.microsoft.com GPG key uses SHA1 which Debian trixie
rejects since 2026-02-01. The official MS container image has no signing issue.
- Add python3 + pip3 + wget on top of dotnet base (bookworm)
- pip3 install --break-system-packages for debian bookworm compatibility
Makefile targets:
make build - build image locally
make rebuild - force no-cache build
make run - build + start container with port mappings
make run-quick - start without rebuilding
make stop/restart - container lifecycle
make logs - follow logs
make shell - bash into running container
make health - curl health endpoint
make smoke - end-to-end TCP + health test (scripts/smoke_test.sh)
make test - unit tests (pytest, no Docker)
make ps/ports - status helpers
make clean - stop + remove image