compose.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 with dotted notation."""
  11. # General standalone variables - register first
  12. self.variables.register(Variable(
  13. name="service_name",
  14. description="Name of the service"
  15. ))
  16. self.variables.register(Variable(
  17. name="container_name",
  18. description="Container name"
  19. ))
  20. # Variable for dynamic port mappings (dict type auto-detected from template)
  21. self.variables.register(Variable(
  22. name="service_port",
  23. description="Service port mappings"
  24. ))
  25. # Network group - enabler controls whether to use network
  26. self.variables.register(Variable(
  27. name="network",
  28. description="Enable custom network",
  29. type="boolean",
  30. default=False
  31. ))
  32. self.variables.register(Variable(
  33. name="network.name",
  34. description="Docker network name",
  35. default="bridge"
  36. ))
  37. self.variables.register(Variable(
  38. name="network.external",
  39. description="Is network external",
  40. type="boolean",
  41. default=True
  42. ))
  43. # Traefik group - enabler controls whether to use Traefik
  44. self.variables.register(Variable(
  45. name="traefik",
  46. description="Enable Traefik reverse proxy",
  47. type="boolean",
  48. default=False
  49. ))
  50. self.variables.register(Variable(
  51. name="traefik.host",
  52. description="Hostname for Traefik routing"
  53. ))
  54. self.variables.register(Variable(
  55. name="traefik.tls",
  56. description="Enable TLS",
  57. type="boolean",
  58. default=True
  59. ))
  60. self.variables.register(Variable(
  61. name="traefik.certresolver",
  62. description="Certificate resolver name",
  63. default="letsencrypt"
  64. ))
  65. # Swarm group - enabler controls whether to use Swarm mode
  66. self.variables.register(Variable(
  67. name="swarm",
  68. description="Enable Docker Swarm mode",
  69. type="boolean",
  70. default=False
  71. ))
  72. self.variables.register(Variable(
  73. name="swarm.replicas",
  74. description="Number of replicas in swarm mode",
  75. type="integer",
  76. default=1
  77. ))
  78. # Register the module
  79. registry.register(ComposeModule)