version: "3.7" services: # Reverse proxy traefik: image: "traefik:v2.8" command: #- "--log.level=DEBUG" - "--api.insecure=true" # allows accessing a Traefik dashboard, disable in production - "--providers.docker=true" # enables the Docker configuration discovery - "--providers.docker.exposedbydefault=false" # do not expose Docker services by default - "--entrypoints.web.address=:5000" # create an entrypoint called web, listening on :5000 ports: - "5000:5000" - "8765:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" # Prisma sqlite migration utility migrate: build: context: ./server/prisma dockerfile: Dockerfile volumes: - sqlite:/database/ environment: - DATABASE_URL=file:/database/db.sqlite # Backend server for managing saved notes backend: build: context: ./server dockerfile: Dockerfile volumes: - sqlite:/database/ environment: - DATABASE_URL=file:/database/db.sqlite - FRONTEND_URL=http://localhost:5000 - CLEANUP_INTERVAL_SECONDS=600 - POST_LIMIT_WINDOW_SECONDS=86400 - POST_LIMIT=50 - NODE_ENV=production depends_on: migrate: condition: service_completed_successfully labels: - "traefik.enable=true" # tell Traefik this is something we would like to expose - "traefik.http.routers.backend.entrypoints=web" # what entrypoint should be used for the backend service. - "traefik.http.routers.backend.rule=Host(`localhost`) && PathPrefix(`/api`) && Method(`POST`)" # # Frontend for serving encrypted notes over HTML (SvelteKit) frontend: build: context: ./webapp dockerfile: Dockerfile args: - VITE_SERVER_INTERNAL=http://backend:8080 - VITE_BRANDING=Noteshare.space [preview] environment: - NODE_ENV=production depends_on: - backend labels: - "traefik.enable=true" # tell Traefik this is something we would like to expose - "traefik.http.routers.frontend.entrypoints=web" # what entrypoint should be used for the frontend service. - "traefik.http.routers.frontend.rule=Host(`localhost`)" # volumes: sqlite: