docker-compose.yml 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. services:
  2. relay:
  3. build:
  4. context: .
  5. dockerfile: Dockerfile
  6. image: eks-relay:local
  7. container_name: eks-relay
  8. restart: always
  9. env_file: .env
  10. environment:
  11. - NODE_ENV=production
  12. - PORT=3000
  13. # Absolute path: Prisma resolves relative file: URLs against prisma/.
  14. - DATABASE_URL=file:/app/data/eks_relay.db
  15. volumes:
  16. # The whole repository is bind-mounted, so `git pull` + restart is enough
  17. # to ship a code change. node_modules stays in a named volume so the
  18. # container's Linux binaries are not shadowed by the host's.
  19. - .:/app
  20. - relay_node_modules:/app/node_modules
  21. - ./data:/app/data
  22. networks:
  23. - web
  24. labels:
  25. - traefik.enable=true
  26. - traefik.docker.network=web
  27. - traefik.http.routers.eksrelay.rule=Host(`eks-relay.easyklima.com`)
  28. - traefik.http.routers.eksrelay.entrypoints=https
  29. - traefik.http.routers.eksrelay.tls=true
  30. - traefik.http.routers.eksrelay.tls.certresolver=letsencrypt
  31. - traefik.http.services.eksrelay.loadbalancer.server.port=3000
  32. - traefik.http.routers.eksrelay.middlewares=eksrelay-headers
  33. - traefik.http.middlewares.eksrelay-headers.headers.sslredirect=true
  34. - traefik.http.middlewares.eksrelay-headers.headers.stsseconds=63072000
  35. - traefik.http.middlewares.eksrelay-headers.headers.stsincludesubdomains=true
  36. - traefik.http.middlewares.eksrelay-headers.headers.referrerpolicy=no-referrer
  37. # HTTP router only exists so Let's Encrypt can answer the ACME challenge.
  38. - traefik.http.routers.eksrelay-http.rule=Host(`eks-relay.easyklima.com`)
  39. - traefik.http.routers.eksrelay-http.entrypoints=http
  40. - traefik.http.routers.eksrelay-http.middlewares=eksrelay-to-https
  41. - traefik.http.middlewares.eksrelay-to-https.redirectscheme.scheme=https
  42. volumes:
  43. relay_node_modules:
  44. networks:
  45. web:
  46. external: true