- Multi-stage Dockerfiles for web/api/generator (pnpm workspace install, tsx runtime — workspace packages are raw TS, same model as runner-template). - docker-compose.prod.yml: postgres + redis + the three app services. api/generator/web use host networking so the generator's host-port probe is correct and every service shares one address space; api + generator mount the Docker socket. Binds nothing on 80/443 — safe beside other apps. - Optional Traefik reverse proxy in infra/traefik/ (heavily gated — only if the box has no existing proxy). - .env.production.example, .dockerignore, DEPLOY.md (Cloudflare zone, GoDaddy nameserver switch, server deploy, Google Cloud Console OAuth app). - api/generator `start` now runs via tsx; `node dist/index.js` could never resolve the raw-TS workspace imports. All three images verified building clean; the API container boots under tsx. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
770 B
YAML
33 lines
770 B
YAML
# Traefik file-provider routes. The app stack uses host networking, so it has
|
|
# no Docker labels for Traefik to discover — routes are declared statically here.
|
|
# Targets are loopback ports owned by docker-compose.prod.yml.
|
|
|
|
http:
|
|
routers:
|
|
bmm-web:
|
|
rule: "Host(`buildmymcp.com`) || Host(`www.buildmymcp.com`)"
|
|
entryPoints:
|
|
- websecure
|
|
service: bmm-web
|
|
tls:
|
|
certResolver: le
|
|
|
|
bmm-api:
|
|
rule: "Host(`api.buildmymcp.com`)"
|
|
entryPoints:
|
|
- websecure
|
|
service: bmm-api
|
|
tls:
|
|
certResolver: le
|
|
|
|
services:
|
|
bmm-web:
|
|
loadBalancer:
|
|
servers:
|
|
- url: "http://127.0.0.1:3001"
|
|
|
|
bmm-api:
|
|
loadBalancer:
|
|
servers:
|
|
- url: "http://127.0.0.1:4000"
|