package infra import ( "fmt" ) // NordVPNContainerRunOpts opciones para ejecutar un container a traves del gateway NordVPN. type NordVPNContainerRunOpts struct { Image string // Imagen Docker a ejecutar (obligatorio) Cmd []string // Comando a ejecutar en el container Env map[string]string // Variables de entorno Volumes []string // Bind mounts Name string // Nombre del container (opcional) Gateway string // Nombre del container NordVPN gateway (default: "nordvpn") Detach bool // Ejecutar en background Remove bool // Eliminar al terminar (--rm) } // NordVPNContainerRun ejecuta un container Docker cuyo trafico de red // pasa por el container gateway NordVPN usando --network=container:. // Devuelve el ID del container creado. func NordVPNContainerRun(opts NordVPNContainerRunOpts) (string, error) { if opts.Image == "" { return "", fmt.Errorf("image required") } if opts.Gateway == "" { opts.Gateway = "nordvpn" } id, err := DockerRunContainer(opts.Image, DockerRunOpts{ Name: opts.Name, Env: opts.Env, Volumes: opts.Volumes, Detach: opts.Detach, Remove: opts.Remove, Network: "container:" + opts.Gateway, Cmd: opts.Cmd, }) if err != nil { return "", fmt.Errorf("nordvpn container run %s: %w", opts.Image, err) } return id, nil }