compose.yaml.j2 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/louislam/dockge:{{ dockge_version }}
  4. container_name: {{ container_name }}
  5. {#
  6. Set container hostname for Dockge identification
  7. #}
  8. hostname: {{ container_hostname }}
  9. {#
  10. Environment variables for Dockge configuration:
  11. - TZ: Timezone for proper log timestamps
  12. - DOCKGE_STACKS_DIR: Directory where Docker Compose stacks are stored
  13. #}
  14. environment:
  15. - TZ={{ container_timezone }}
  16. - DOCKGE_STACKS_DIR={{ stacks_path }}
  17. {#
  18. Volume configuration:
  19. - Docker socket: Required for managing Docker containers (read-only)
  20. - dockge-data: Persistent storage for Dockge configuration
  21. - stacks_path: Directory for Docker Compose stacks management
  22. #}
  23. volumes:
  24. - /var/run/docker.sock:/var/run/docker.sock:ro
  25. - dockge-data:/app/data
  26. - {{ stacks_path }}:{{ stacks_path }}
  27. {#
  28. When traefik is enabled, add traefik network for reverse proxy access
  29. #}
  30. {% if traefik_enabled %}
  31. networks:
  32. {{ traefik_network }}:
  33. {% endif %}
  34. {#
  35. Port mappings for web interface (only when Traefik is disabled)
  36. #}
  37. {% if not traefik_enabled %}
  38. ports:
  39. - "{{ ports_http }}:5001"
  40. {% endif %}
  41. {#
  42. When traefik_enabled is set, add traefik labels
  43. (optionally enable TLS if traefik_tls_enabled is set)
  44. #}
  45. {% if traefik_enabled %}
  46. labels:
  47. - traefik.enable=true
  48. - traefik.docker.network={{ traefik_network }}
  49. - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=5001
  50. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  51. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  52. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  53. {% if traefik_tls_enabled %}
  54. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  55. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  56. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  57. - traefik.http.routers.{{ service_name }}-https.tls=true
  58. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  59. {% endif %}
  60. {% endif %}
  61. restart: {{ restart_policy }}
  62. {#
  63. Volume definitions:
  64. - dockge-data: Persistent storage for Dockge configuration and data
  65. #}
  66. volumes:
  67. dockge-data:
  68. driver: local
  69. {#
  70. Network definitions (only when Traefik is enabled):
  71. - Traefik network: always external (managed by Traefik)
  72. #}
  73. {% if traefik_enabled %}
  74. networks:
  75. {{ traefik_network }}:
  76. external: true
  77. {% endif %}