compose.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from ..core.module import Module
  2. from ..core.variables import Variable
  3. from ..core.registry import registry
  4. class ComposeModule(Module):
  5. """Docker Compose module with variables."""
  6. name = "compose"
  7. description = "Manage Docker Compose configurations"
  8. files = ["docker-compose.yml", "compose.yml", "compose.yaml"]
  9. def _init_variables(self):
  10. """Initialize Compose-specific variables."""
  11. # Register groups
  12. self.variables.register_group(
  13. "general", "General Settings",
  14. "Basic configuration for Docker Compose services"
  15. )
  16. self.variables.register_group(
  17. "swarm", "Docker Swarm Settings",
  18. "Settings for deploying services in Docker Swarm mode", icon="󰒋 ", enabler="swarm"
  19. )
  20. self.variables.register_group(
  21. "traefik", "Traefik Configuration",
  22. "Reverse proxy settings", icon="󰞉 ", enabler="traefik"
  23. )
  24. # Register variables
  25. self.variables.register_variable(Variable(
  26. name="service_name",
  27. description="Name of the service",
  28. group="general"
  29. ))
  30. self.variables.register_variable(Variable(
  31. name="container_name",
  32. description="Container name",
  33. group="general"
  34. ))
  35. self.variables.register_variable(Variable(
  36. name="service_port",
  37. description="Port(s) the service listens on (can be single or multiple)",
  38. type="integer",
  39. group="general",
  40. multivalue=True
  41. ))
  42. self.variables.register_variable(Variable(
  43. name="swarm",
  44. description="Enable Docker Swarm mode",
  45. type="boolean",
  46. default=False,
  47. group="swarm"
  48. ))
  49. self.variables.register_variable(Variable(
  50. name="traefik",
  51. description="Enable Traefik",
  52. type="boolean",
  53. default=False,
  54. group="traefik"
  55. ))
  56. self.variables.register_variable(Variable(
  57. name="traefik_host",
  58. description="Traefik hostname",
  59. group="traefik"
  60. ))
  61. self.variables.register_variable(Variable(
  62. name="traefik_certresolver",
  63. description="Traefik certificate resolver",
  64. group="traefik"
  65. ))
  66. # Add docker_network as a multivalue example
  67. self.variables.register_variable(Variable(
  68. name="docker_network",
  69. description="Docker network(s) to connect to",
  70. type="string",
  71. group="general",
  72. multivalue=True
  73. ))
  74. # Register the module
  75. registry.register(ComposeModule)