Add labels and additional network to connect container to

This commit is contained in:
Jonathan Leibiusky @xetorthio
2017-08-25 10:21:59 -03:00
parent 52d523ac92
commit c44512f159

View File

@@ -206,17 +206,19 @@ func (d *docker) DeleteContainer(id string) error {
} }
type CreateContainerOpts struct { type CreateContainerOpts struct {
Image string Image string
WindowsEndpoint string WindowsEndpoint string
SessionId string SessionId string
PwdIpAddress string PwdIpAddress string
ContainerName string ContainerName string
Hostname string Hostname string
ServerCert []byte ServerCert []byte
ServerKey []byte ServerKey []byte
CACert []byte CACert []byte
Privileged bool Privileged bool
HostFQDN string HostFQDN string
Labels map[string]string
AdditionalNetworks []string
} }
func (d *docker) CreateContainer(opts CreateContainerOpts) (string, error) { func (d *docker) CreateContainer(opts CreateContainerOpts) (string, error) {
@@ -280,18 +282,14 @@ func (d *docker) CreateContainer(opts CreateContainerOpts) (string, error) {
AttachStdout: true, AttachStdout: true,
AttachStderr: true, AttachStderr: true,
Env: env, Env: env,
//ExposedPorts: nat.PortSet{ Labels: opts.Labels,
//"2377": struct{}{},
//"4789/udp": struct{}{},
//"7946": struct{}{},
//"7946/udp": struct{}{},
//},
} }
networkConf := &network.NetworkingConfig{ networkConf := &network.NetworkingConfig{
map[string]*network.EndpointSettings{ map[string]*network.EndpointSettings{
opts.SessionId: &network.EndpointSettings{Aliases: []string{opts.Hostname}}, opts.SessionId: &network.EndpointSettings{Aliases: []string{opts.Hostname}},
}, },
} }
container, err := d.c.ContainerCreate(context.Background(), cf, h, networkConf, opts.ContainerName) container, err := d.c.ContainerCreate(context.Background(), cf, h, networkConf, opts.ContainerName)
if err != nil { if err != nil {
@@ -309,6 +307,13 @@ func (d *docker) CreateContainer(opts CreateContainerOpts) (string, error) {
} }
} }
for _, netId := range opts.AdditionalNetworks {
set := &network.EndpointSettings{}
if err := d.c.NetworkConnect(context.Background(), netId, container.ID, set); err != nil {
return "", err
}
}
if err := d.copyIfSet(opts.ServerCert, "cert.pem", containerCertDir, opts.ContainerName); err != nil { if err := d.copyIfSet(opts.ServerCert, "cert.pem", containerCertDir, opts.ContainerName); err != nil {
return "", err return "", err
} }