compose.yaml.j2 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/gitlab/gitlab-ce:18.8.4-ce.0
  4. restart: {{ restart_policy }}
  5. shm_size: '256m'
  6. env_file: .env
  7. {% if traefik_enabled %}
  8. networks:
  9. {{ traefik_network }}:
  10. {% endif %}
  11. ports:
  12. {% if not traefik_enabled %}
  13. - "{{ ports_http }}:80"
  14. {% endif %}
  15. - "{{ ports_ssh }}:22"
  16. {% if registry_enabled and not traefik_enabled %}
  17. - "{{ ports_registry }}:5000"
  18. {% endif %}
  19. volumes:
  20. - ./config/gitlab.rb:/etc/gitlab/gitlab.rb:ro
  21. - {{ service_name }}_config:/etc/gitlab
  22. - {{ service_name }}_logs:/var/log/gitlab
  23. - {{ service_name }}_data:/var/opt/gitlab
  24. {% if traefik_enabled %}
  25. labels:
  26. - traefik.enable=true
  27. - traefik.docker.network={{ traefik_network }}
  28. - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=80
  29. - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web
  30. - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  31. - traefik.http.routers.{{ service_name }}_http.entrypoints=web
  32. {% if traefik_tls_enabled %}
  33. - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web
  34. - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  35. - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure
  36. - traefik.http.routers.{{ service_name }}_https.tls=true
  37. - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }}
  38. {% endif %}
  39. {% if registry_enabled %}
  40. - traefik.http.services.{{ service_name }}_registry.loadBalancer.server.port=5000
  41. - traefik.http.routers.{{ service_name }}_registry-http.service={{ service_name }}_registry
  42. - traefik.http.routers.{{ service_name }}_registry-http.rule=Host(`{{ traefik_registry_host }}`.{{ traefik_domain }}`)
  43. - traefik.http.routers.{{ service_name }}_registry-http.entrypoints=web
  44. {% if traefik_tls_enabled %}
  45. - traefik.http.routers.{{ service_name }}_registry-https.service={{ service_name }}_registry
  46. - traefik.http.routers.{{ service_name }}_registry-https.rule=Host(`{{ traefik_registry_host }}`.{{ traefik_domain }}`)
  47. - traefik.http.routers.{{ service_name }}_registry-https.entrypoints=websecure
  48. - traefik.http.routers.{{ service_name }}_registry-https.tls=true
  49. - traefik.http.routers.{{ service_name }}_registry-https.tls.certresolver={{ traefik_tls_certresolver }}
  50. {% endif %}
  51. {% endif %}
  52. {% endif %}
  53. volumes:
  54. {{ service_name }}_config:
  55. driver: local
  56. {{ service_name }}_logs:
  57. driver: local
  58. {{ service_name }}_data:
  59. driver: local
  60. {% if traefik_enabled %}
  61. networks:
  62. {{ traefik_network }}:
  63. external: true
  64. {% endif %}