docker-compose.yaml 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. {% from "macros/nginx.conf.jinja" import nginx_conf %}
  2. {% set tpl = ix_lib.base.render.Render(values) %}
  3. {% set c1 = tpl.add_container(values.consts.collabora_container_name, "image") %}
  4. {% set nginx = namespace(x=None) %}
  5. {% if values.network.certificate_id %}
  6. {% set nginx.x = tpl.add_container(values.consts.nginx_container_name, "nginx_image") %}
  7. {% do nginx.x.depends.add_dependency(values.consts.collabora_container_name, "service_healthy") %}
  8. {% do nginx.x.add_caps(["CHOWN", "FOWNER", "DAC_OVERRIDE", "SETGID", "SETUID"]) %}
  9. {% do nginx.x.healthcheck.set_test("curl", {"port": values.network.web_port.port_number, "path": "/robots.txt", "scheme": "https"}) %}
  10. {% do nginx.x.add_port(values.network.web_port) %}
  11. {% set cert = values.ix_certificates[values.network.certificate_id] %}
  12. {% do nginx.x.configs.add("private", cert.privatekey, values.consts.nginx_ssl_key_path) %}
  13. {% do nginx.x.configs.add("public", cert.certificate, values.consts.nginx_ssl_cert_path) %}
  14. {% do nginx.x.configs.add("nginx.conf", nginx_conf(values), "/etc/nginx/nginx.conf") %}
  15. {% do nginx.x.add_storage("/var/cache/nginx", {"type": "anonymous"}) %}
  16. {% do nginx.x.add_storage("/var/run", {"type": "anonymous"}) %}
  17. {% else %}
  18. {% do c1.add_port(values.network.web_port, {"container_port": values.consts.internal_collabora_web_port}) %}
  19. {% endif %}
  20. {% do c1.remove_security_opt("no-new-privileges") %}
  21. {% do c1.add_caps(caps=["CHOWN", "FOWNER", "DAC_OVERRIDE", "SETGID", "SETUID", "SETFCAP", "SYS_CHROOT", "MKNOD"]) %}
  22. {% do c1.healthcheck.set_test("http", {"port": values.consts.internal_collabora_web_port})%}
  23. {% do c1.environment.add_env("timezone", values.TZ) %}
  24. {% do c1.environment.add_env("aliasgroup1", values.collabora.aliasgroup1|join(",")) %}
  25. {% do c1.environment.add_env("dictionaries", values.collabora.dictionaries|join(" ")) %}
  26. {% do c1.environment.add_env("extra_params", values.collabora.extra_params|join(" ")) %}
  27. {% do c1.environment.add_env("DONT_GEN_SSL_CERT", true) %}
  28. {% set domain = values.collabora.server_name if ":" in values.collabora.server_name else "%s:%d"|format(values.collabora.server_name, values.network.web_port.port_number) %}
  29. {% do c1.environment.add_env("server_name", domain.split(":443")[0].split(":80")[0]) %}
  30. {% if values.collabora.enable_webui %}
  31. {% do c1.environment.add_env("username", values.collabora.username) %}
  32. {% do c1.environment.add_env("password", values.collabora.password) %}
  33. {% endif %}
  34. {% do c1.environment.add_user_envs(values.collabora.additional_envs) %}
  35. {% for store in values.storage.additional_storage %}
  36. {% do c1.add_storage(store.mount_path, store)%}
  37. {% endfor %}
  38. {% set proto = "https" if values.network.certificate_id else "http" %}
  39. {% set path = "/browser/dist/admin/admin.html" if values.collabora.enable_webui else "/" %}
  40. {% do tpl.portals.add(values.network.web_port, {"scheme": proto, "path": path}) %}
  41. {{ tpl.render() | tojson }}