docker-compose.yaml 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. {% set tpl = ix_lib.base.render.Render(values) %}
  2. {% set c1 = tpl.add_container(values.consts.frigate_container_name, values.frigate.image_selector) %}
  3. {% do c1.set_user(0, 0) %}
  4. {% do c1.add_caps(["CHOWN", "FOWNER", "DAC_OVERRIDE", "SETGID", "SETUID", "PERFMON", "KILL"]) %}
  5. {% do c1.set_shm_size_mb(tpl.funcs.or_default(values.frigate.shm_size_mb, 30)) %}
  6. {% if values.frigate.mount_usb_bus %}
  7. {% do c1.devices.add_usb_bus() %}
  8. {% endif %}
  9. {% for device in values.frigate.devices %}
  10. {% do c1.devices.add_device(device.host_device, device.container_device) %}
  11. {% endfor %}
  12. {% do c1.environment.add_user_envs(values.frigate.additional_envs) %}
  13. {% do c1.healthcheck.set_test("curl", {"port": values.consts.internal_no_auth_port, "path": "/api"}) %}
  14. {% do c1.add_storage("/config", values.storage.config) %}
  15. {% do c1.add_storage("/media", values.storage.media) %}
  16. {% do c1.add_storage("/tmp/cache", values.storage.cache) %}
  17. {% do c1.add_storage("/tmp", {"type": "anonymous", "volume_config": {}}) %}
  18. {% for store in values.storage.additional_storage %}
  19. {% do c1.add_storage(store.mount_path, store) %}
  20. {% endfor %}
  21. {% if not values.network.host_network %}
  22. {% do c1.add_port(values.network.web_port, {"container_port": values.consts.internal_web_port}) %}
  23. {% do c1.add_port(values.network.no_auth_port, {"container_port": values.consts.internal_no_auth_port}) %}
  24. {% do c1.add_port(values.network.rtsp_port, {"container_port": values.consts.internal_rtsp_port}) %}
  25. {% do c1.add_port(values.network.go2rtc_port, {"container_port": values.consts.internal_go2rtc_port}) %}
  26. {% do c1.add_port(values.network.webrtc_port, {"container_port": values.consts.internal_webrtc_port}) %}
  27. {% do c1.add_port(values.network.webrtc_port, {"container_port": values.consts.internal_webrtc_port, "protocol": "udp"}) %}
  28. {% endif %}
  29. {% if values.network.certificate_id %}
  30. {% set cert = values.ix_certificates[values.network.certificate_id] %}
  31. {% do c1.configs.add("private", cert.privatekey, values.consts.ssl_key_path) %}
  32. {% do c1.configs.add("public", cert.certificate, values.consts.ssl_cert_path) %}
  33. {% endif %}
  34. {% do tpl.portals.add(values.network.web_port, {"scheme": "https", "port": values.consts.internal_web_port if values.network.host_network else None}) %}
  35. {% if values.network.host_network or values.network.no_auth_port.bind_mode %}
  36. {% do tpl.portals.add(values.network.no_auth_port, {"name": "Web UI (No Auth)", "port": values.consts.internal_no_auth_port if values.network.host_network else None}) %}
  37. {% endif %}
  38. {% do tpl.notes.set_body(values.consts.notes_body) %}
  39. {{ tpl.render() | tojson }}