docker-compose.yaml 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. {% set tpl = ix_lib.base.render.Render(values) %}
  2. {% set perm_container = tpl.deps.perms(values.consts.perms_container_name) %}
  3. {% set perm_config = {"uid": values.consts.run_as_user, "gid": values.consts.run_as_group, "mode": "check"} %}
  4. {% set wallet = tpl.add_container(values.consts.monero_wallet_rpc_container_name, "image") %}
  5. {% do wallet.set_user(values.consts.run_as_user, values.consts.run_as_group) %}
  6. {% do wallet.healthcheck.set_custom_test(
  7. "curl --digest -u $(cat /home/monero/wallet/monero-wallet-rpc.%d.login) http://localhost:%d/json_rpc" | format(
  8. values.network.wallet_rpc_port.port_number, values.network.wallet_rpc_port.port_number
  9. )
  10. ) %}
  11. {% do wallet.set_entrypoint([
  12. "monero-wallet-rpc",
  13. "--non-interactive",
  14. "--rpc-bind-ip=0.0.0.0",
  15. "--confirm-external-bind"
  16. ]) %}
  17. {% set commands = namespace(x=[
  18. "--rpc-bind-port=%d" | format(values.network.wallet_rpc_port.port_number),
  19. "--wallet-dir=/home/monero/wallet/wallet"
  20. ]) %}
  21. {% if not values.wallet.use_remote_node %}
  22. {% do commands.x.append("--daemon-address=%s:%d" | format("host.docker.internal", values.wallet.local_node_rpc_port)) %}
  23. {% do commands.x.append("--trusted-daemon") %}
  24. {% else %}
  25. {% do commands.x.append("--daemon-address=%s" | format(values.wallet.remote_node_address)) %}
  26. {% if values.wallet.trust_daemon %}
  27. {% do commands.x.append("--trusted-daemon") %}
  28. {% endif %}
  29. {% if values.wallet.ssl_enabled %}
  30. {% do commands.x.append("--daemon-ssl=enabled") %}
  31. {% endif %}
  32. {% endif %}
  33. {% if values.wallet.ipv6_enabled %}
  34. {% do commands.x.append("--rpc-use-ipv6") %}
  35. {% endif %}
  36. {% do wallet.set_command(commands.x) %}
  37. {% do wallet.add_extra_host("host.docker.internal", "host-gateway") %}
  38. {% do wallet.add_storage("/home/monero/wallet", values.storage.wallet) %}
  39. {% do perm_container.add_or_skip_action("wallet", values.storage.wallet, perm_config) %}
  40. {% for store in values.storage.additional_storage %}
  41. {% do wallet.add_storage(store.mount_path, store) %}
  42. {% do perm_container.add_or_skip_action(store.mount_path, store, perm_config) %}
  43. {% endfor %}
  44. {% do wallet.add_port(values.network.wallet_rpc_port) %}
  45. {% if perm_container.has_actions() %}
  46. {% do perm_container.activate() %}
  47. {% do wallet.depends.add_dependency(values.consts.perms_container_name, "service_completed_successfully") %}
  48. {% endif %}
  49. {{ tpl.render() | tojson }}