feat: support more docker options

This commit is contained in:
fengcaiwen
2023-05-18 14:25:56 +08:00
parent f20bf21e6b
commit b8e183ca82
2 changed files with 13 additions and 1 deletions

View File

@@ -79,7 +79,6 @@ Startup your kubernetes workloads in local Docker container with same volume、e
}
}
return handler.SshJump(sshConf, cmd.Flags())
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
devOptions.Workload = args[0]
@@ -89,6 +88,7 @@ Startup your kubernetes workloads in local Docker container with same volume、e
return dev.DoDev(devOptions, cmd.Flags(), f)
},
}
cmd.Flags().SortFlags = false
cmd.Flags().StringToStringVarP(&devOptions.Headers, "headers", "H", map[string]string{}, "Traffic with special headers with reverse it to local PC, you should startup your service after reverse workloads successfully, If not special, redirect all traffic to local PC, format is k=v, like: k1=v1,k2=v2")
cmd.Flags().BoolVar(&config.Debug, "debug", false, "enable debug mode or not, true or false")
cmd.Flags().StringVar(&config.Image, "image", config.Image, "use this image to startup container")

View File

@@ -4,6 +4,7 @@ import (
"github.com/containerd/containerd/platforms"
"github.com/docker/docker/api/types/network"
"github.com/pkg/errors"
"github.com/wencaiwulue/kubevpn/pkg/util"
)
@@ -41,6 +42,13 @@ func mergeDockerOptions(r ConfigList, copts *Options, tempContainerConfig *conta
config.platform = &p
}
tempContainerConfig.HostConfig.CapAdd = append(tempContainerConfig.HostConfig.CapAdd, config.hostConfig.CapAdd...)
tempContainerConfig.HostConfig.SecurityOpt = append(tempContainerConfig.HostConfig.SecurityOpt, config.hostConfig.SecurityOpt...)
tempContainerConfig.HostConfig.VolumesFrom = append(tempContainerConfig.HostConfig.VolumesFrom, config.hostConfig.VolumesFrom...)
tempContainerConfig.HostConfig.DNS = append(tempContainerConfig.HostConfig.DNS, config.hostConfig.DNS...)
tempContainerConfig.HostConfig.DNSOptions = append(tempContainerConfig.HostConfig.DNSOptions, config.hostConfig.DNSOptions...)
tempContainerConfig.HostConfig.DNSSearch = append(tempContainerConfig.HostConfig.DNSSearch, config.hostConfig.DNSSearch...)
config.hostConfig = tempContainerConfig.HostConfig
config.networkingConfig.EndpointsConfig = util.Merge[string, *network.EndpointSettings](tempContainerConfig.NetworkingConfig.EndpointsConfig, config.networkingConfig.EndpointsConfig)
@@ -62,7 +70,11 @@ func mergeDockerOptions(r ConfigList, copts *Options, tempContainerConfig *conta
if c.User == "" {
c.User = config.config.User
}
c.Labels = util.Merge[string, string](config.config.Labels, c.Labels)
c.Volumes = util.Merge[string, struct{}](c.Volumes, config.config.Volumes)
if c.WorkingDir == "" {
c.WorkingDir = config.config.WorkingDir
}
config.config = c