forked from toolshed/abra
.chglog
cli
cmd
pkg
app
catalogue
client
container
convert
stack
client.go
connection.go
context.go
context_test.go
registry.go
secret.go
volumes.go
compose
config
recipe
secret
web
scripts
tests
.drone.yml
.envrc.sample
.gitignore
.goreleaser.yml
Makefile
README.md
TODO.md
go.mod
go.sum
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
// Package client provides Docker client initiatialisation functions.
|
|
package client
|
|
|
|
import (
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/docker/docker/client"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// New initiates a new Docker client.
|
|
func New(contextName string) (*client.Client, error) {
|
|
context, err := GetContext(contextName)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ctxEndpoint, err := GetContextEndpoint(context)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
helper := newConnectionHelper(ctxEndpoint)
|
|
httpClient := &http.Client{
|
|
// No tls, no proxy
|
|
Transport: &http.Transport{
|
|
DialContext: helper.Dialer,
|
|
},
|
|
}
|
|
|
|
var clientOpts []client.Opt
|
|
clientOpts = append(clientOpts,
|
|
client.WithHTTPClient(httpClient),
|
|
client.WithHost(helper.Host),
|
|
client.WithDialContext(helper.Dialer),
|
|
)
|
|
|
|
version := os.Getenv("DOCKER_API_VERSION")
|
|
if version != "" {
|
|
clientOpts = append(clientOpts, client.WithVersion(version))
|
|
} else {
|
|
clientOpts = append(clientOpts, client.WithAPIVersionNegotiation())
|
|
}
|
|
|
|
cl, err := client.NewClientWithOpts(clientOpts...)
|
|
if err != nil {
|
|
logrus.Fatalf("unable to create Docker client: %s", err)
|
|
}
|
|
|
|
return cl, nil
|
|
}
|