docker-compose.yml.xxx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. version: "3.4"
  2. services:
  3. traefik:
  4. image: "traefik:v3.2"
  5. ports:
  6. - target: 80
  7. published: 80
  8. mode: host
  9. - target: 443
  10. published: 443
  11. mode: host
  12. command:
  13. ### SWARM Provider (mitte docker!)
  14. - "--providers.swarm=true"
  15. - "--providers.swarm.endpoint=tcp://127.0.0.1:2375" # HTTP endpoint
  16. # - "--providers.swarm.endpoint=unix:///var/run/docker.sock"
  17. - "--providers.swarm.exposedbydefault=false"
  18. - "--providers.swarm.network=my-traefik-network"
  19. ### File Provider
  20. - "--providers.file.filename=/letsencrypt/dynamic_conf.yml"
  21. ### Log Settings
  22. - "--log.level=DEBUG"
  23. - "--log"
  24. - "--accesslog"
  25. ### API Settings
  26. - "--api=true"
  27. - "--api.insecure=true"
  28. - "--api.dashboard=true"
  29. - "--api.debug=true"
  30. ### Entrypoints
  31. - "--entrypoints.web.address=:80"
  32. - "--entrypoints.websecure.address=:443"
  33. ### Let's Encrypt (DNS-01 Challenge)
  34. - "--certificatesResolvers.mychallenge.acme.dnschallenge=true"
  35. - "--certificatesResolvers.mychallenge.acme.dnschallenge.provider=digitalocean"
  36. - "--certificatesResolvers.mychallenge.acme.storage=/letsencrypt/acme.json"
  37. - "--certificatesResolvers.mychallenge.acme.email=ardo@odamus.com"
  38. ### Metrics
  39. - "--metrics.prometheus=true"
  40. environment:
  41. - "DO_AUTH_TOKEN=644121bb69116ae2dec66a50e97a7af3d464aa8a261330dedd7c030b064955ad"
  42. volumes:
  43. - "traefik_certs:/letsencrypt"
  44. - "/var/run/docker.sock:/var/run/docker.sock:ro"
  45. - "tmp:/tmp"
  46. networks:
  47. - traefik-network
  48. - traefik-external
  49. deploy:
  50. mode: replicated
  51. replicas: 1
  52. placement:
  53. constraints:
  54. - node.hostname == hetzner
  55. - node.role == manager
  56. labels:
  57. - "traefik.enable=true"
  58. ### HTTP-to-HTTPS redirect Middleware
  59. - "traefik.http.middlewares.http-to-https.redirectscheme.scheme=https"
  60. ### HTTP router
  61. - "traefik.http.routers.api.rule=Host(`traefik.odamus.com`)"
  62. - "traefik.http.routers.api.entrypoints=web"
  63. - "traefik.http.routers.api.service=api@internal"
  64. - "traefik.http.routers.api.middlewares=http-to-https"
  65. ### HTTPS router
  66. - "traefik.http.routers.api-secure.rule=Host(`traefik.odamus.com`)"
  67. - "traefik.http.routers.api-secure.entrypoints=websecure"
  68. - "traefik.http.routers.api-secure.service=api@internal"
  69. - "traefik.http.routers.api-secure.tls.certresolver=mychallenge"
  70. ### Basic Auth
  71. - "traefik.http.middlewares.traefik-auth.basicauth.users=ardo:$$apr1$$U6JrtDD/$$Z9U3bdtKCx2OvOaVNnAw80"
  72. - "traefik.http.routers.api-secure.middlewares=traefik-auth"
  73. ### Port
  74. - "traefik.http.services.traefik-svc.loadbalancer.server.port=8080"
  75. configs:
  76. - source: dynamic_conf
  77. target: /letsencrypt/dynamic_conf.yml
  78. configs:
  79. dynamic_conf:
  80. file: ./config/dynamic_conf.yml
  81. networks:
  82. traefik-network:
  83. external:
  84. name: traefik-network
  85. traefik-external:
  86. external:
  87. name: traefik-external
  88. volumes:
  89. traefik_certs:
  90. external: true
  91. tmp: