docker-compose.yaml 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. {# Adjust values to library will pick some things automatically #}
  2. {% do values.update({
  3. "skip_generic_variables": true,
  4. "images": {
  5. "image": {
  6. "repository": values.image.repository,
  7. "tag": values.image.tag or "latest",
  8. }
  9. },
  10. "network": {
  11. "dns_opts": values.dns_config.get("options", []),
  12. "dns_searches": values.dns_config.get("searches", []),
  13. "dns_nameservers": values.dns_config.get("nameservers", []),
  14. }
  15. }) %}
  16. {% for label in values.labels %}
  17. {% do label.update({"containers": [values.ix_context.app_name]}) %}
  18. {% endfor %}
  19. {# Any manipulation to values should be done before this point #}
  20. {# Template starts here #}
  21. {% set tpl = ix_lib.base.render.Render(values) %}
  22. {# Image Configuration #}
  23. {% set c1 = tpl.add_container(values.ix_context.app_name, "image") %}
  24. {% do c1.set_pull_policy(values.image.pull_policy) %}
  25. {# Container Configuration #}
  26. {% if values.restart_policy == "on-failure" %}
  27. {% do c1.restart.set_policy(values.restart_policy, values.max_retry_count) %}
  28. {% else %}
  29. {% do c1.restart.set_policy(values.restart_policy) %}
  30. {% endif %}
  31. {% do c1.set_tty(values.tty) %}
  32. {% do c1.set_stdin(values.stdin) %}
  33. {% if values.hostname %}
  34. {% do c1.set_hostname(values.hostname) %}
  35. {% endif %}
  36. {% if values.entrypoint %}
  37. {% do c1.set_entrypoint(values.entrypoint) %}
  38. {% endif %}
  39. {% if values.command %}
  40. {% do c1.set_command(values.command) %}
  41. {% endif %}
  42. {% for device in values.devices %}
  43. {% do c1.devices.add_device(device.host_device, device.container_device) %}
  44. {% endfor %}
  45. {% if values.disable_builtin_healthcheck %}
  46. {% do c1.healthcheck.disable() %}
  47. {% else %}
  48. {% do c1.healthcheck.use_built_in() %}
  49. {% endif %}
  50. {% do c1.environment.add_env("TZ", values.TZ) %}
  51. {% do c1.environment.add_user_envs(values.envs) %}
  52. {# Network Configuration #}
  53. {% if values.host_network %}
  54. {% do c1.set_network_mode("host") %}
  55. {% else %}
  56. {% for port in values.ports %}
  57. {% do c1.add_port(port) %}
  58. {% endfor %}
  59. {% endif %}
  60. {# Security Context Configuration #}
  61. {% do c1.set_privileged(values.privileged) %}
  62. {% do c1.clear_caps() %}
  63. {% do c1.remove_security_opt("no-new-privileges") %}
  64. {% do c1.add_caps(values.capabilities.add) %}
  65. {% if values.run_as_custom_user %}
  66. {% do c1.set_user(values.run_as.user, values.run_as.group) %}
  67. {% endif %}
  68. {% for store in values.storage %}
  69. {% do c1.add_storage(store.mount_path, store) %}
  70. {% endfor %}
  71. {% if not values.resources.enable_resource_limits %}
  72. {% do c1.deploy.resources.remove_cpus_and_memory() %}
  73. {% endif %}
  74. {% for portal in values.portals %}
  75. {% do tpl.portals.add({"bind_mode": "published"}, portal) %}
  76. {% endfor %}
  77. {% do tpl.notes.set_body(values.notes) %}
  78. {{ tpl.render() | tojson }}