docker-compose.yaml 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. {% set tpl = ix_lib.base.render.Render(values) %}
  2. {% set c1 = tpl.add_container(values.consts.netdata_container_name, "image") %}
  3. {% set caps = namespace(x=["CHOWN", "FOWNER", "DAC_OVERRIDE", "SETGID", "SETUID", "SYS_PTRACE"]) %}
  4. {% set debs = namespace(x=[]) %}
  5. {% do debs.x.extend(values.netdata.additional_deb_packages) %}
  6. {% if values.netdata.enable_smart %}
  7. {% do caps.x.append("SYS_RAWIO") %}
  8. {% do debs.x.append("smartmontools") %}
  9. {% endif %}
  10. {% if values.netdata.enable_intel_gpu %}
  11. {% do debs.x.append("intel-gpu-tools") %}
  12. {% endif %}
  13. {% set final_debs = debs.x|unique|list %}
  14. {% do c1.add_caps(caps.x) %}
  15. {% do c1.set_pid_mode("host") %}
  16. {% do c1.remove_security_opt("no-new-privileges") %}
  17. {% do c1.add_security_opt("apparmor", "unconfined") %}
  18. {% do c1.healthcheck.set_custom_test("/usr/sbin/health.sh") %}
  19. {% do c1.environment.add_env("NETDATA_LISTENER_PORT", values.network.web_port.port_number) %}
  20. {% if final_debs %}
  21. {% do c1.environment.add_env("NETDATA_EXTRA_DEB_PACKAGES", final_debs|join(" ")) %}
  22. {% endif %}
  23. {% do c1.environment.add_user_envs(values.netdata.additional_envs) %}
  24. {% do c1.add_port(values.network.web_port) %}
  25. {% for dev in values.netdata.devices %}
  26. {% do c1.devices.add_device(dev.host_device, dev.container_device, "r") %}
  27. {% endfor %}
  28. {% do c1.add_docker_socket() %}
  29. {% do c1.add_storage("/host/etc/os-release", {"type": "host_path", "read_only": true, "host_path_config": {"path": "/etc/os-release"}}) %}
  30. {% do c1.add_storage("/host/sys", {"type": "host_path", "read_only": true, "host_path_config": {"path": "/sys"}}) %}
  31. {% do c1.add_storage("/host/proc", {"type": "host_path", "read_only": true, "host_path_config": {"path": "/proc"}}) %}
  32. {% do c1.add_storage("/host/etc/passwd", {"type": "host_path", "read_only": true, "host_path_config": {"path": "/etc/passwd"}}) %}
  33. {% do c1.add_storage("/host/etc/group", {"type": "host_path", "read_only": true, "host_path_config": {"path": "/etc/group"}}) %}
  34. {% do c1.add_storage("/host/etc/hostname", {"type": "host_path", "read_only": true, "host_path_config": {"path": "/etc/hostname"}}) %}
  35. {% do c1.add_storage("/etc/netdata", values.storage.config) %}
  36. {% do c1.add_storage("/var/cache/netdata", values.storage.cache) %}
  37. {% do c1.add_storage("/var/lib/netdata", values.storage.lib) %}
  38. {% for store in values.storage.additional_storage %}
  39. {% do c1.add_storage(store.mount_path, store) %}
  40. {% endfor %}
  41. {% do tpl.portals.add(values.network.web_port, {"path": "/v3"}) %}
  42. {{ tpl.render() | tojson }}