Categorygithub.com/james226/dockerclient
repositorypackage
0.0.0-20230710164025-53372290dba9
Repository: https://github.com/james226/dockerclient.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

dockerclient

GoDoc

Getting Started

go install github.com/james226/dockerclient

Examples

Here is a basic example showing how to spin up a container using this package:

package main

import (
	"context"
	"github.com/james226/dockerclient"
	"github.com/james226/dockerclient/options"
	"os"
	"os/signal"
	"sync"
	"syscall"
)

func main() {
	wg := &sync.WaitGroup{}
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()

	c, err := dockerclient.NewClient()
	if err != nil {
		panic(err)
	}

	network, err := c.Networks.Create(ctx, "example-network")
	if err != nil {
		panic(err)
	}

	image, err := c.Images.Build(ctx, "example-container", "./path/to/Dockerfile")
	if err != nil {
		panic(err)
	}

	wg.Add(1)

	opt := options.WithName("example-container").
		WithPortBinding(10000, 10000, "tcp").
		WithEnvironmentVariables(map[string]string{
			"PORT": "10000",
			"FOO":  "BAR",
		})
	container, err := c.Containers.Start(ctx, image, network, opt)
	if err != nil {
		panic(err)
	}

	go func() {
		abort := make(chan os.Signal, 1)
		signal.Notify(abort, syscall.SIGINT, syscall.SIGTERM)
		<-abort

		defer wg.Done()

		container.Stop(ctx, true)
		cancel()
	}()

	wg.Wait()
}

You can find more examples of how to use this package in the examples directory.