compose.yaml.j2 3.8 KB

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