compose.yaml.j2 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. services:
  2. {{ service_name }}:
  3. image: ghcr.io/goauthentik/server:2025.10.1
  4. container_name: {{ container_name }}
  5. command: server
  6. env_file:
  7. - .env.authentik
  8. {% if ports_enabled %}
  9. ports:
  10. - "{{ ports_http }}:9000"
  11. - "{{ ports_https }}:9443"
  12. {% endif %}
  13. {% if network_enabled or traefik_enabled %}
  14. networks:
  15. {% if network_enabled %}
  16. - {{ network_name }}
  17. {% endif %}
  18. {% if traefik_enabled %}
  19. - {{ traefik_network }}
  20. {% endif %}
  21. {% endif %}
  22. {% if traefik_enabled %}
  23. labels:
  24. - traefik.enable=true
  25. - traefik.docker.network={{ traefik_network }}
  26. - traefik.http.services.{{ service_name }}.loadbalancer.server.port=9000
  27. - traefik.http.services.{{ service_name }}.loadbalancer.server.scheme=http
  28. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}`)
  29. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  30. {% if traefik_tls_enabled %}
  31. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}`)
  32. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  33. - traefik.http.routers.{{ service_name }}-https.tls=true
  34. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  35. {% endif %}
  36. {% endif %}
  37. volumes:
  38. - ./media:/media
  39. - ./custom-templates:/templates
  40. depends_on:
  41. - {{ service_name }}-postgres
  42. - {{ service_name }}-redis
  43. restart: {{ restart_policy }}
  44. {{ service_name }}-worker:
  45. image: ghcr.io/goauthentik/server:2025.10.1
  46. container_name: {{ service_name }}-worker
  47. command: worker
  48. env_file:
  49. - .env.authentik
  50. user: root
  51. volumes:
  52. - /run/docker.sock:/run/docker.sock
  53. - ./media:/media
  54. - ./certs:/certs
  55. - ./custom-templates:/templates
  56. {% if network_enabled or traefik_enabled %}
  57. networks:
  58. {% if network_enabled %}
  59. - {{ network_name }}
  60. {% endif %}
  61. {% if traefik_enabled %}
  62. - {{ traefik_network }}
  63. {% endif %}
  64. {% endif %}
  65. depends_on:
  66. - {{ service_name }}-postgres
  67. - {{ service_name }}-redis
  68. restart: {{ restart_policy }}
  69. {{ service_name }}-redis:
  70. image: docker.io/library/redis:8.2.3
  71. container_name: {{ service_name }}-redis
  72. command: --save 60 1 --loglevel warning
  73. healthcheck:
  74. test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
  75. start_period: 20s
  76. interval: 30s
  77. retries: 5
  78. timeout: 3s
  79. volumes:
  80. - redis_data:/data
  81. {% if network_enabled or traefik_enabled %}
  82. networks:
  83. {% if network_enabled %}
  84. - {{ network_name }}
  85. {% endif %}
  86. {% if traefik_enabled %}
  87. - {{ traefik_network }}
  88. {% endif %}
  89. {% endif %}
  90. restart: {{ restart_policy }}
  91. {% if not database_external %}
  92. {{ service_name }}-postgres:
  93. image: docker.io/library/postgres:17.6
  94. container_name: {{ service_name }}-db
  95. env_file:
  96. - .env.postgres
  97. healthcheck:
  98. test: ["CMD-SHELL", "pg_isready -U {{ database_user }}"]
  99. start_period: 30s
  100. interval: 10s
  101. timeout: 10s
  102. retries: 5
  103. volumes:
  104. - database_data:/var/lib/postgresql/data
  105. {% if network_enabled or traefik_enabled %}
  106. networks:
  107. {% if network_enabled %}
  108. - {{ network_name }}
  109. {% endif %}
  110. {% if traefik_enabled %}
  111. - {{ traefik_network }}
  112. {% endif %}
  113. {% endif %}
  114. restart: {{ restart_policy }}
  115. {% endif %}
  116. volumes:
  117. database_data:
  118. driver: local
  119. redis_data:
  120. driver: local
  121. {% if network_enabled or traefik_enabled %}
  122. networks:
  123. {% if network_enabled %}
  124. {{ network_name }}:
  125. {% if network_external %}
  126. external: true
  127. {% endif %}
  128. {% endif %}
  129. {% if traefik_enabled %}
  130. {{ traefik_network }}:
  131. external: true
  132. {% endif %}
  133. {% endif %}