docker-compose.yml 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. version: "3.9"
  2. volumes:
  3. traefik:
  4. nextcloud:
  5. db:
  6. services:
  7. reverse-proxy:
  8. restart: always
  9. # The official v2 Traefik docker image
  10. image: traefik:v2.7
  11. # Enables the web UI and tells Traefik to listen to docker //--api.insecure=true
  12. command:
  13. - "--api=true"
  14. - "--api.dashboard=true"
  15. - "--accesslog"
  16. - "--log.level=DEBUG"
  17. - "--providers.docker"
  18. - "--providers.docker.endpoint=unix:///var/run/docker.sock"
  19. - "--providers.docker.swarmMode=true"
  20. - "--entrypoints.web.address=:80"
  21. #- "--entrypoints.websecure.address=:443"
  22. #- "--certificatesresolvers.letsencrypt.acme.email=jason@jasonplayne.com"
  23. #- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
  24. #- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
  25. #- "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
  26. ports:
  27. # The HTTP port
  28. - "80:80"
  29. - "443:443"
  30. volumes:
  31. # So that Traefik can listen to the Docker events
  32. - /var/run/docker.sock:/var/run/docker.sock
  33. - traefik:/etc/traefik
  34. deploy:
  35. mode: replicated
  36. replicas: 1
  37. endpoint_mode: vip
  38. labels:
  39. - "traefik.enable=true"
  40. - "traefik.http.routers.dashboard.rule=Host(`10.10.20.197`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
  41. - "traefik.http.routers.dashboard.service=api@internal"
  42. - "traefik.http.routers.dashboard.entrypoints=web"
  43. #- "traefik.http.routers.dashboard.middlewares=ipwhitelist"
  44. #- "traefik.http.middlewares.dashboard.ipwhitelist.sourcerange=`127.0.0.1/32, 10.10.20.0/24`"
  45. # Dummy service for Swarm port detection. The port can be any valid integer value.
  46. - "traefik.http.services.dashboard-svc.loadbalancer.server.port=9999"
  47. placement:
  48. constraints:
  49. - node.role == manager
  50. resources:
  51. limits:
  52. memory: 1G
  53. postgres:
  54. image: postgres
  55. restart: always
  56. environment:
  57. POSTGRES_USER: nextcloud
  58. POSTGRES_PASSWORD: disgrace-quickstep-fleshy
  59. volumes:
  60. - db:/var/lib/postgresql/data
  61. ports:
  62. - "5432"
  63. deploy:
  64. labels:
  65. - traefik.enable=false
  66. mode: replicated
  67. replicas: 1
  68. resources:
  69. limits:
  70. memory: 2G
  71. nextcloud:
  72. image: nextcloud:stable-apache
  73. restart: always
  74. ports:
  75. - "8001:80"
  76. labels:
  77. - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
  78. deploy:
  79. mode: replicated
  80. replicas: 1
  81. labels:
  82. - traefik.enable=true
  83. - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
  84. #- traefik.http.routers.nextcloud.tls=true
  85. #- traefik.http.routers.nextcloud.tls.certresolver=letsencrypt
  86. #- traefik.http.routers.nextcloud.entrypoints=websecure
  87. - traefik.http.routers.nextcloud.entrypoints=web
  88. - traefik.http.services.nextcloud.loadbalancer.server.port=8001
  89. resources:
  90. limits:
  91. memory: 2G