- Add infra/docker/hub.Dockerfile (Next.js multi-stage build)
- Add infra/compose/hub.yml with app-shared-net
- Add Traefik route for hub.asepharyana.{my,web}.id → hub:3000
- Update docker-build-push.yml: path detection, matrix build, dispatch, manifest
- Update deploy-docker.yml: include hub.yml in ALL_COMPOSE_FILES
- Update update-submodule.yml: allow hub service
- Update docs/ARCHITECTURE.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
63 lines
1.6 KiB
YAML
63 lines
1.6 KiB
YAML
http:
|
|
routers:
|
|
# ── Hub (Portfolio SPA) ──
|
|
hub:
|
|
rule: 'Host(`hub.asepharyana.my.id`) || Host(`hub.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: hub-service
|
|
|
|
# ── Scraper API ──
|
|
scraper:
|
|
rule: 'Host(`scraper.asepharyana.my.id`) || Host(`api.asepharyana.my.id`) || Host(`scraper.asepharyana.web.id`) || Host(`api.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: scraper-service
|
|
|
|
# ── Dashboard ──
|
|
dashboard:
|
|
rule: 'Host(`dashboard.asepharyana.my.id`) || Host(`status.asepharyana.my.id`) || Host(`dashboard.asepharyana.web.id`) || Host(`status.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: dashboard-service
|
|
|
|
# ── Jaeger UI ──
|
|
jaeger:
|
|
rule: 'Host(`jaeger.asepharyana.my.id`) || Host(`jaeger.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: jaeger-service
|
|
|
|
services:
|
|
hub-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://hub:3000'
|
|
|
|
scraper-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://scraper-api:4091'
|
|
|
|
dashboard-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://dashboard:8080'
|
|
|
|
jaeger-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://jaeger:16686'
|