Add support to define a custom docker network and enable docker ipv6 (#893)

- Add support to define a custom docker network and enable docker ipv6
- Adjust docs
This commit is contained in:
Anbraten
2022-04-29 15:15:32 +02:00
committed by GitHub
parent 9c6c4559a7
commit 62a1fd8dcb
4 changed files with 68 additions and 43 deletions

View File

@@ -4,6 +4,7 @@ import (
"context"
"io"
"os"
"strconv"
"strings"
"github.com/docker/docker/api/types"
@@ -19,7 +20,9 @@ import (
)
type docker struct {
client client.APIClient
client client.APIClient
enableIPv6 bool
network string
}
// make sure docker implements Engine
@@ -52,6 +55,10 @@ func (e *docker) Load() error {
}
e.client = cli
e.enableIPv6, _ = strconv.ParseBool(os.Getenv("WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6"))
e.network = os.Getenv("WOODPECKER_BACKEND_DOCKER_NETWORK")
return nil
}
@@ -69,8 +76,9 @@ func (e *docker) Setup(_ context.Context, conf *backend.Config) error {
}
for _, n := range conf.Networks {
_, err := e.client.NetworkCreate(noContext, n.Name, types.NetworkCreate{
Driver: n.Driver,
Options: n.DriverOpts,
Driver: n.Driver,
Options: n.DriverOpts,
EnableIPv6: e.enableIPv6,
// Labels: defaultLabels,
})
if err != nil {
@@ -137,16 +145,15 @@ func (e *docker) Exec(ctx context.Context, proc *backend.Step) error {
return err
}
}
}
// if proc.Network != "host" { // or bridge, overlay, none, internal, container:<name> ....
// err = e.client.NetworkConnect(ctx, proc.Network, proc.Name, &network.EndpointSettings{
// Aliases: proc.NetworkAliases,
// })
// if err != nil {
// return err
// }
// }
// join the container to an existing network
if e.network != "" {
err = e.client.NetworkConnect(ctx, e.network, proc.Name, &network.EndpointSettings{})
if err != nil {
return err
}
}
}
return e.client.ContainerStart(ctx, proc.Name, startOpts)
}