109 lines
4.2 KiB
YAML
109 lines
4.2 KiB
YAML
services:
|
|
rdesign-frontend:
|
|
build:
|
|
context: .
|
|
dockerfile: frontend/Dockerfile
|
|
container_name: rdesign-frontend
|
|
restart: unless-stopped
|
|
environment:
|
|
- NEXT_PUBLIC_RDESIGN_API_URL=https://scribus.rspace.online
|
|
- NEXT_PUBLIC_STUDIO_URL=https://scribus.rspace.online/vnc/vnc.html?autoconnect=true&resize=scale&path=vnc/websockify
|
|
- NEXT_PUBLIC_LLM_API_URL=https://llm.jeffemmett.com
|
|
- NEXT_PUBLIC_ENCRYPTID_SERVER_URL=https://auth.ridentity.online
|
|
- ENCRYPTID_SERVER_URL=https://auth.ridentity.online
|
|
- RSPACE_API_URL=https://rspace.online/api
|
|
- HOSTNAME=0.0.0.0
|
|
labels:
|
|
- "traefik.enable=true"
|
|
# Catch-all for the frontend (lowest priority of our services)
|
|
- "traefik.http.routers.rdesign-frontend.rule=Host(`scribus.rspace.online`) && !PathPrefix(`/vnc`) && !Path(`/health`) && !PathPrefix(`/output`) && !PathPrefix(`/templates/{path:.*}`) && !PathPrefix(`/rswag`) && !PathPrefix(`/export`) && !PathPrefix(`/convert`) && !PathPrefix(`/jobs`) && !PathPrefix(`/docs`) && !PathPrefix(`/openapi`)"
|
|
- "traefik.http.routers.rdesign-frontend.entrypoints=web"
|
|
- "traefik.http.routers.rdesign-frontend.priority=190"
|
|
- "traefik.http.services.rdesign-frontend.loadbalancer.server.port=3000"
|
|
networks:
|
|
- traefik-public
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "1"
|
|
memory: 1G
|
|
reservations:
|
|
cpus: "0.25"
|
|
memory: 256M
|
|
|
|
rdesign-api:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: rdesign-api
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./templates:/app/templates
|
|
- ./output:/app/output
|
|
- ./jobs:/app/jobs
|
|
- ./scripts:/app/scripts
|
|
- /opt/apps/rswag/designs:/app/rswag-designs:ro
|
|
environment:
|
|
- PYTHONUNBUFFERED=1
|
|
- BASE_URL=https://scribus.rspace.online
|
|
- RSWAG_DESIGNS_PATH=/app/rswag-designs
|
|
labels:
|
|
- "traefik.enable=true"
|
|
# API backend — serves /api/*, /health, /output/*, /templates/*, etc.
|
|
- "traefik.http.routers.rdesign-api.rule=Host(`scribus.rspace.online`) && (Path(`/health`) || PathPrefix(`/output`) || PathPrefix(`/templates`) || PathPrefix(`/rswag`) || PathPrefix(`/export`) || PathPrefix(`/convert`) || PathPrefix(`/jobs`) || PathPrefix(`/docs`) || PathPrefix(`/openapi`))"
|
|
- "traefik.http.routers.rdesign-api.entrypoints=web"
|
|
- "traefik.http.routers.rdesign-api.priority=200"
|
|
- "traefik.http.services.rdesign-api.loadbalancer.server.port=8080"
|
|
- "traefik.http.middlewares.rdesign-cors.headers.accesscontrolallowmethods=GET,POST,OPTIONS,DELETE"
|
|
- "traefik.http.middlewares.rdesign-cors.headers.accesscontrolallowheaders=*"
|
|
- "traefik.http.middlewares.rdesign-cors.headers.accesscontrolalloworiginlist=https://scribus.rspace.online,https://rswag.online"
|
|
- "traefik.http.middlewares.rdesign-cors.headers.accesscontrolmaxage=86400"
|
|
- "traefik.http.routers.rdesign-api.middlewares=rdesign-cors"
|
|
networks:
|
|
- traefik-public
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "4"
|
|
memory: 8G
|
|
reservations:
|
|
cpus: "1"
|
|
memory: 2G
|
|
|
|
rdesign-studio:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.studio
|
|
container_name: rdesign-studio
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./templates:/app/templates
|
|
- ./output:/app/output
|
|
- /opt/apps/rswag/designs:/app/rswag-designs:ro
|
|
environment:
|
|
- VNC_PASSWORD=changeme
|
|
- DISPLAY_WIDTH=1920
|
|
- DISPLAY_HEIGHT=1080
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.rdesign-studio.rule=Host(`scribus.rspace.online`) && PathPrefix(`/vnc`)"
|
|
- "traefik.http.routers.rdesign-studio.entrypoints=web"
|
|
- "traefik.http.routers.rdesign-studio.priority=210"
|
|
- "traefik.http.services.rdesign-studio.loadbalancer.server.port=6080"
|
|
- "traefik.http.routers.rdesign-studio.middlewares=rdesign-studio-strip"
|
|
- "traefik.http.middlewares.rdesign-studio-strip.stripprefix.prefixes=/vnc"
|
|
networks:
|
|
- traefik-public
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "2"
|
|
memory: 4G
|
|
reservations:
|
|
cpus: "0.5"
|
|
memory: 1G
|
|
|
|
networks:
|
|
traefik-public:
|
|
external: true
|