compose.yaml.j2 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/gitea/gitea:1.25.4
  4. restart: {{ restart_policy }}
  5. environment:
  6. - USER_UID={{ user_uid }}
  7. - USER_GID={{ user_gid }}
  8. {% if database_type != 'sqlite' %}
  9. - GITEA__database__DB_TYPE={{ database_type }}
  10. {% if database_external %}
  11. - GITEA__database__HOST={{ database_host }}
  12. {% else %}
  13. - GITEA__database__HOST={{ service_name }}_db
  14. {% endif %}
  15. - GITEA__database__NAME={{ database_name }}
  16. - GITEA__database__USER={{ database_user }}
  17. - GITEA__database__PASSWD=${DATABASE_PASSWORD}
  18. {% endif %}
  19. - GITEA__server__SSH_PORT={{ ports_ssh }}
  20. {% if not traefik_enabled %}
  21. - GITEA__server__ROOT_URL={{ gitea_url }}
  22. {% else %}
  23. - GITEA__server__ROOT_URL=https://{{ traefik_host }}.{{ traefik_domain }}
  24. {% endif %}
  25. {% if not database_external and (database_type == "postgres" or database_type == "mysql") or traefik_enabled %}
  26. networks:
  27. {% if not database_external and database_type != 'sqlite' %}
  28. - {{ service_name }}_backend
  29. {% endif %}
  30. {% if traefik_enabled %}
  31. - {{ traefik_network }}
  32. {% endif %}
  33. {% endif %}
  34. ports:
  35. {% if not traefik_enabled %}
  36. - "{{ ports_http }}:3000"
  37. {% endif %}
  38. - "{{ ports_ssh }}:22"
  39. volumes:
  40. - {{ service_name }}_data:/data
  41. - /etc/timezone:/etc/timezone:ro
  42. - /etc/localtime:/etc/localtime:ro
  43. {% if traefik_enabled %}
  44. labels:
  45. - traefik.enable=true
  46. - traefik.docker.network={{ traefik_network }}
  47. - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=3000
  48. - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web
  49. - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  50. - traefik.http.routers.{{ service_name }}_http.entrypoints=web
  51. {% if traefik_tls_enabled %}
  52. - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web
  53. - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  54. - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure
  55. - traefik.http.routers.{{ service_name }}_https.tls=true
  56. - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }}
  57. {% endif %}
  58. {% endif %}
  59. {% if not database_external and database_type != 'sqlite' %}
  60. depends_on:
  61. - {{ service_name }}_db
  62. {% endif %}
  63. {% if not database_external and database_type == "postgres" %}
  64. {{ service_name }}_db:
  65. image: docker.io/library/postgres:17.8
  66. restart: {{ restart_policy }}
  67. environment:
  68. - TZ={{ container_timezone }}
  69. - POSTGRES_USER={{ database_user }}
  70. - POSTGRES_PASSWORD=${DATABASE_PASSWORD}
  71. - POSTGRES_DB={{ database_name }}
  72. networks:
  73. - {{ service_name }}_backend
  74. healthcheck:
  75. test: ["CMD-SHELL", "pg_isready -U {{ database_user }}"]
  76. start_period: 30s
  77. interval: 10s
  78. timeout: 10s
  79. retries: 5
  80. volumes:
  81. - {{ service_name }}_db:/var/lib/postgresql/data
  82. {% elif not database_external and database_type == "mysql" %}
  83. {{ service_name }}_db:
  84. image: docker.io/library/mysql:8.1
  85. restart: {{ restart_policy }}
  86. environment:
  87. - MYSQL_USER={{ database_user }}
  88. - MYSQL_PASSWORD=${DATABASE_PASSWORD}
  89. - MYSQL_DATABASE={{ database_name }}
  90. - MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD}
  91. networks:
  92. - {{ service_name }}_backend
  93. volumes:
  94. - {{ service_name }}_db:/var/lib/mysql
  95. {% endif %}
  96. volumes:
  97. {{ service_name }}_data:
  98. driver: local
  99. {% if not database_external %}
  100. {% if database_type == "postgres" or database_type == "mysql" %}
  101. {{ service_name }}_db:
  102. driver: local
  103. {% endif %}
  104. {% endif %}
  105. {% if not database_external and (database_type == "postgres" or database_type == "mysql") or traefik_enabled %}
  106. networks:
  107. {% if not database_external %}
  108. {{ service_name }}_backend:
  109. driver: bridge
  110. {% endif %}
  111. {% if traefik_enabled %}
  112. {{ traefik_network }}:
  113. external: true
  114. {% endif %}
  115. {% endif %}