The Docker image excludes the Crusader assets on purpose. Mount them at runtime so they stay outside the image and are never served directly to clients.
```powershell
cd map_renderer
docker build -t crusader-map-renderer .
docker run --rm -p 3000:3000 `
-v ${PWD}/STATIC:/app/STATIC:ro `
-v ${PWD}/STATIC_REGRET:/app/STATIC_REGRET:ro `
crusader-map-renderer
```
If only one game is available, mount only that folder.
## Docker Compose
The compose file mounts `STATIC` and `STATIC_REGRET` from the host filesystem into the container as read-only volumes. They are excluded from the image build by `.dockerignore`, so the assets are never copied into the image.
```powershell
cd map_renderer
docker compose up --build
```
## HTTP Surface
-`GET /api/maps` returns the detected catalog.
-`POST /api/builds` starts or reuses a build.
-`GET /api/builds/:id` returns build status.
-`GET /api/maps/:game/:mapId/metadata?buildId=...` returns map bounds and tile settings.