feat: remove docker network if container length is zero

This commit is contained in:
fengcaiwen
2023-03-23 10:48:08 +08:00
parent 100c60a90a
commit 5ecebf2958

View File

@@ -220,14 +220,13 @@ func (r Run) Remove(ctx context.Context) error {
log.Debug(err) log.Debug(err)
} }
} }
for _, runConfig := range r { var i types.NetworkResource
_, err = cli.NetworkInspect(ctx, runConfig.containerName, types.NetworkInspectOptions{}) i, err = cli.NetworkInspect(ctx, config.ConfigMapPodTrafficManager, types.NetworkInspectOptions{})
if err == nil {
err = cli.NetworkRemove(ctx, runConfig.containerName)
if err != nil { if err != nil {
log.Debug(err) return err
}
} }
if len(i.Containers) == 0 {
return cli.NetworkRemove(ctx, config.ConfigMapPodTrafficManager)
} }
return nil return nil
} }
@@ -543,7 +542,9 @@ func DoDev(devOptions Options, args []string, f cmdutil.Factory) error {
if id, err = run(ctx, c, cli, dockerCli); err != nil { if id, err = run(ctx, c, cli, dockerCli); err != nil {
return err return err
} }
h := interrupt.New(nil, func() { h := interrupt.New(func(signal os.Signal) {
os.Exit(0)
}, func() {
cancel() cancel()
_ = cli.ContainerKill(context.Background(), id, "SIGTERM") _ = cli.ContainerKill(context.Background(), id, "SIGTERM")
_ = runLogsSinceNow(dockerCli, id) _ = runLogsSinceNow(dockerCli, id)
@@ -551,6 +552,10 @@ func DoDev(devOptions Options, args []string, f cmdutil.Factory) error {
go h.Run(func() error { select {} }) go h.Run(func() error { select {} })
defer h.Close() defer h.Close()
if err = runLogsWaitRunning(ctx, dockerCli, id); err != nil { if err = runLogsWaitRunning(ctx, dockerCli, id); err != nil {
// interrupt by signal KILL
if ctx.Err() == context.Canceled {
return nil
}
return err return err
} }
if err = devOptions.NetMode.Set("container:" + id); err != nil { if err = devOptions.NetMode.Set("container:" + id); err != nil {
@@ -709,7 +714,7 @@ func createKubevpnNetwork(ctx context.Context, cli *client.Client) (string, erro
} }
} }
create, err := cli.NetworkCreate(ctx, "kubevpn", types.NetworkCreate{ create, err := cli.NetworkCreate(ctx, config.ConfigMapPodTrafficManager, types.NetworkCreate{
Driver: "bridge", Driver: "bridge",
Scope: "local", Scope: "local",
IPAM: &network.IPAM{ IPAM: &network.IPAM{