rspace-online/docker-compose.yml

80 lines
2.5 KiB
YAML

services:
rspace:
build:
context: .
additional_contexts:
encryptid-sdk: ../encryptid-sdk
container_name: rspace-online
restart: unless-stopped
volumes:
- rspace-data:/data/communities
- rspace-books:/data/books
- rspace-swag:/data/swag-artifacts
- rspace-files:/data/files
environment:
- NODE_ENV=production
- STORAGE_DIR=/data/communities
- BOOKS_DIR=/data/books
- SWAG_ARTIFACTS_DIR=/data/swag-artifacts
- PORT=3000
- INTERNAL_API_KEY=${INTERNAL_API_KEY}
- DATABASE_URL=postgres://rspace:${POSTGRES_PASSWORD:-rspace}@rspace-db:5432/rspace
- FLOW_SERVICE_URL=http://payment-flow:3010
- FLOW_ID=a79144ec-e6a2-4e30-a42a-6d8237a5953d
- FUNNEL_ID=0ff6a9ac-1667-4fc7-9a01-b1620810509f
- FILES_DIR=/data/files
depends_on:
rspace-db:
condition: service_healthy
labels:
- "traefik.enable=true"
# Main domain — serves landing + path-based routing
- "traefik.http.routers.rspace-main.rule=Host(`rspace.online`)"
- "traefik.http.routers.rspace-main.entrypoints=web"
- "traefik.http.routers.rspace-main.priority=110"
# Subdomains — backward compat for *.rspace.online canvas
- "traefik.http.routers.rspace-canvas.rule=HostRegexp(`{subdomain:[a-z0-9-]+}.rspace.online`) && !Host(`rspace.online`) && !Host(`www.rspace.online`) && !Host(`auth.rspace.online`)"
- "traefik.http.routers.rspace-canvas.entrypoints=web"
- "traefik.http.routers.rspace-canvas.priority=100"
# Service configuration
- "traefik.http.services.rspace-online.loadbalancer.server.port=3000"
- "traefik.docker.network=traefik-public"
networks:
- traefik-public
- rspace-internal
- payment-network
rspace-db:
image: postgres:16-alpine
container_name: rspace-db
restart: unless-stopped
volumes:
- rspace-pgdata:/var/lib/postgresql/data
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
environment:
- POSTGRES_DB=rspace
- POSTGRES_USER=rspace
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-rspace}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U rspace"]
interval: 5s
timeout: 3s
retries: 5
networks:
- rspace-internal
volumes:
rspace-data:
rspace-books:
rspace-swag:
rspace-files:
rspace-pgdata:
networks:
traefik-public:
external: true
payment-network:
name: payment-infra_payment-network
external: true
rspace-internal: