package models // DockerfileData holds the common data for any Dockerfile template. // Specific templates might embed this or use a more specific struct. type DockerfileData struct { AppPort int AppName string } // GolangDockerfileData holds data specific to the Go Dockerfile template. type GolangDockerfileData struct { DockerfileData // Embed common fields GoVersion string StaticDir string // Optional: path to static assets to be copied } // NodejsDockerfileData holds data specific to the Node.js Dockerfile template. type NodejsDockerfileData struct { DockerfileData // Embed common fields NodeVersion string BuildArgs string // Optional: arguments for npm run build BuildOutputDir string // Optional: output directory of the build step (e.g., "dist", "build") Entrypoint string // e.g., "server.js" or "dist/index.js" } // ComposeVolumeData defines a volume mapping for docker-compose. type ComposeVolumeData struct { HostPath string ContainerPath string ReadOnly bool } // ComposeData holds data for the docker-compose.yml template. type ComposeData struct { ServiceName string ImageName string // Full image name, e.g., your-registry.com/app-name:tag HostPort int // Port exposed on the host machine AppPort int // Port the application inside the container listens on Environment map[string]string Volumes []ComposeVolumeData Domain string // Domain for Traefik routing CertResolver string // Traefik certificate resolver name ExtraTraefikLabels map[string]string // For any additional Traefik labels }