compose.yaml.j2 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. services:
  2. {{ service_name }}:
  3. image: checkmk/check-mk-raw:2.4.0-{{ monitoring_version }}
  4. container_name: {{ container_name }}
  5. {#
  6. Set container hostname for Checkmk identification
  7. #}
  8. hostname: {{ container_hostname }}
  9. {#
  10. Environment variables for Checkmk configuration:
  11. - TZ: Timezone for proper log timestamps
  12. - CMK_PASSWORD: Admin password for web interface
  13. - CMK_SITE_ID: Site identifier for Checkmk instance
  14. #}
  15. environment:
  16. - TZ={{ container_timezone }}
  17. - CMK_PASSWORD={{ cmk_password }}
  18. - CMK_SITE_ID={{ cmk_site_id }}
  19. {#
  20. Temporary filesystem for Checkmk runtime files
  21. #}
  22. tmpfs:
  23. - /opt/omd/sites/{{ cmk_site_id }}/tmp:uid={{ user_uid }},gid={{ user_gid }}
  24. {#
  25. Volume configuration:
  26. - /etc/localtime: System time synchronization
  27. - data: Persistent storage for Checkmk sites and configuration
  28. #}
  29. volumes:
  30. - /etc/localtime:/etc/localtime:ro
  31. - data:/omd/sites:rw
  32. {#
  33. When traefik is enabled, add traefik network for reverse proxy access
  34. #}
  35. {% if traefik_enabled %}
  36. networks:
  37. {{ traefik_network }}:
  38. {% endif %}
  39. {#
  40. Port mappings (only when Traefik is disabled):
  41. - HTTP: Web interface
  42. - Agent: Checkmk agent communication
  43. - SNMP: SNMP trap receiver
  44. #}
  45. {% if not traefik_enabled %}
  46. ports:
  47. - "{{ ports_http }}:8000"
  48. - "{{ ports_agent }}:5000"
  49. - "{{ ports_snmp }}:162/udp"
  50. {% endif %}
  51. {#
  52. When traefik_enabled is set, add traefik labels
  53. (optionally enable TLS if traefik_tls_enabled is set)
  54. #}
  55. {% if traefik_enabled %}
  56. labels:
  57. - traefik.enable=true
  58. - traefik.docker.network={{ traefik_network }}
  59. - traefik.http.services.{{ service_name }}-web.loadBalancer.server.port=5000
  60. - traefik.http.services.{{ service_name }}-web.loadBalancer.server.scheme=http
  61. - traefik.http.routers.{{ service_name }}-http.service={{ service_name }}-web
  62. - traefik.http.routers.{{ service_name }}-http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  63. - traefik.http.routers.{{ service_name }}-http.entrypoints={{ traefik_entrypoint }}
  64. {% if traefik_tls_enabled %}
  65. - traefik.http.routers.{{ service_name }}-https.service={{ service_name }}-web
  66. - traefik.http.routers.{{ service_name }}-https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  67. - traefik.http.routers.{{ service_name }}-https.entrypoints={{ traefik_tls_entrypoint }}
  68. - traefik.http.routers.{{ service_name }}-https.tls=true
  69. - traefik.http.routers.{{ service_name }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  70. {% endif %}
  71. {% endif %}
  72. restart: {{ restart_policy }}
  73. {#
  74. Volume definitions:
  75. - data: Persistent storage for Checkmk sites and configuration
  76. #}
  77. volumes:
  78. data:
  79. driver: local
  80. {#
  81. Network definitions (only when Traefik is enabled):
  82. - Traefik network: always external (managed by Traefik)
  83. #}
  84. {% if traefik_enabled %}
  85. networks:
  86. {{ traefik_network }}:
  87. external: true
  88. {% endif %}