--- name: portalbrasil-devsite-demo services: traefik: image: traefik:v2.11 ports: - 80:80 labels: - traefik.enable=true - traefik.constraint-label=public - traefik.http.routers.traefik-public-http.rule=Host(`traefik.${STACK_HOSTNAME:-devsite.localhost}`) - traefik.http.routers.traefik-public-http.entrypoints=http - traefik.http.routers.traefik-public-http.service=api@internal - traefik.http.services.traefik-public.loadbalancer.server.port=8000 # GENERIC MIDDLEWARES - traefik.http.middlewares.gzip.compress=true - traefik.http.middlewares.gzip.compress.excludedcontenttypes=image/png, image/jpeg, font/woff2 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro command: - --providers.docker - --providers.docker.constraints=Label(`traefik.constraint-label`, `public`) - --providers.docker.exposedbydefault=false - --entrypoints.http.address=:80 - --accesslog - --log - --api frontend: image: ghcr.io/portal-br/devsite-frontend:${DEVSITE_VERSION:-1.0.0a1} platform: linux/amd64 environment: RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone depends_on: - backend labels: - traefik.enable=true - traefik.constraint-label=public # Service - traefik.http.services.svc-frontend.loadbalancer.server.port=3000 # Routers ## / - traefik.http.routers.rt-frontend.rule=Host(`${STACK_HOSTNAME:-devsite.localhost}`) - traefik.http.routers.rt-frontend.entrypoints=http - traefik.http.routers.rt-frontend.service=svc-frontend - traefik.http.routers.rt-frontend.middlewares=gzip backend: image: ghcr.io/portal-br/devsite-demo:${DEVSITE_VERSION:-1.0.0a1} platform: linux/amd64 labels: - traefik.enable=true - traefik.constraint-label=public # Services - traefik.http.services.svc-backend.loadbalancer.server.port=8080 # Middlewares ## VHM rewrite /++api++/ - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.regex=^/\\+\\+api\\+\\+($$|/.*)" - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.replacement=/VirtualHostBase/http/${STACK_HOSTNAME:-devsite.localhost}/Plone/++api++/VirtualHostRoot$$1" ## VHM rewrite /ClassicUI/ - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.regex=^/ClassicUI($$|/.*)" - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.replacement=/VirtualHostBase/http/${STACK_HOSTNAME:-devsite.localhost}/Plone/VirtualHostRoot/_vh_ClassicUI$$1" ## Basic Authentication ### Note: all dollar signs in the hash need to be doubled for escaping. ### To create user:password pair, it's possible to use this command: ### echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g ### Defaults to admin:admin - traefik.http.middlewares.mw-backend-auth.basicauth.headerField=X-Auth-ClassicUI - traefik.http.middlewares.mw-backend-auth.basicauth.users=admin:$$apr1$$uZPT5Fgu$$AmlIdamxT5ipBvPlsdfD70 # Routers - traefik.http.routers.rt-backend-api.rule=Host(`${STACK_HOSTNAME:-devsite.localhost}`) && (PathPrefix(`/++api++`)) - traefik.http.routers.rt-backend-api.entrypoints=http - traefik.http.routers.rt-backend-api.service=svc-backend - traefik.http.routers.rt-backend-api.middlewares=gzip,mw-backend-vhm-api