services: backend: image: zimengxiong/excalidash-backend:latest container_name: excalidash-backend environment: - DATABASE_URL=file:/app/prisma/dev.db - PORT=8000 - NODE_ENV=production # Optional for single-instance deployments: # if unset, backend auto-generates and persists one in the volume. # Recommended to set explicitly for portability and multi-instance setups. - JWT_SECRET=${JWT_SECRET} - CSRF_SECRET=${CSRF_SECRET} volumes: - backend-data:/app/prisma networks: - excalidash-network restart: unless-stopped healthcheck: test: [ "CMD", "node", "-e", "require('http').get('http://localhost:8000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))", ] interval: 30s timeout: 10s retries: 3 frontend: image: zimengxiong/excalidash-frontend:latest container_name: excalidash-frontend ports: - "6767:80" depends_on: - backend networks: - excalidash-network restart: unless-stopped healthcheck: test: [ "CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:80", ] interval: 30s timeout: 10s retries: 3 networks: excalidash-network: driver: bridge volumes: backend-data: