Operations
Docker
Building and running routess images.
Each app has its own Dockerfile. Builds run from the monorepo root so bun install can resolve workspace:* deps. All app images build on top of a shared dependency image (docker/Dockerfile.deps) passed in as the DEPS_IMAGE build arg.
Images published
| Image | Source | Base | Notes |
|---|---|---|---|
ghcr.io/robbeverhelst/routess-web | apps/web/Dockerfile | nginx:alpine | Static SPA, runtime env injection |
ghcr.io/robbeverhelst/routess-api | apps/api/Dockerfile | oven/bun:alpine | Read-only root filesystem |
ghcr.io/robbeverhelst/routess-docs | apps/docs/Dockerfile | oven/bun:alpine | Next.js standalone |
ghcr.io/robbeverhelst/routess-landing | apps/landing/Dockerfile | oven/bun:alpine | Next.js standalone |
Build locally
Build the shared deps image once, then bake all app images:
# from the monorepo root
docker build -f docker/Dockerfile.deps -t routess-deps .
# all images (web, api, docs, landing)
DEPS_IMAGE=routess-deps bun run build:imagesTo build a single image instead:
docker build --build-arg DEPS_IMAGE=routess-deps -f apps/web/Dockerfile -t routess-web .Run locally
docker run --rm -p 8080:8080 \
-e VITE_API_URL=http://localhost:3000 \
-e VITE_MAPBOX_ACCESS_TOKEN=pk.xxx \
ghcr.io/robbeverhelst/routess-web:latestArchitectures
CI builds linux/amd64 images via docker buildx. On Apple Silicon, Docker runs them through Rosetta emulation; native arm64 images are not published yet.