-
Notifications
You must be signed in to change notification settings - Fork 0
/
dockerutil.go
47 lines (39 loc) · 1.21 KB
/
dockerutil.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
Copyright London Stock Exchange 2016 All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package util
import (
"runtime"
"strings"
docker "github.com/fsouza/go-dockerclient"
"github.com/hyperledger/fabric/common/metadata"
"github.com/hyperledger/fabric/core/config"
"github.com/spf13/viper"
)
//NewDockerClient creates a docker client
func NewDockerClient() (client *docker.Client, err error) {
endpoint := viper.GetString("vm.endpoint")
tlsenabled := viper.GetBool("vm.docker.tls.enabled")
if tlsenabled {
cert := config.GetPath("vm.docker.tls.cert.file")
key := config.GetPath("vm.docker.tls.key.file")
ca := config.GetPath("vm.docker.tls.ca.file")
client, err = docker.NewTLSClient(endpoint, cert, key, ca)
} else {
client, err = docker.NewClient(endpoint)
}
return
}
func ParseDockerfileTemplate(template string) string {
r := strings.NewReplacer(
"$(ARCH)", runtime.GOARCH,
"$(PROJECT_VERSION)", metadata.Version,
"$(BASE_VERSION)", metadata.BaseVersion,
"$(DOCKER_NS)", metadata.DockerNamespace,
"$(BASE_DOCKER_NS)", metadata.BaseDockerNamespace)
return r.Replace(template)
}
func GetDockerfileFromConfig(path string) string {
return ParseDockerfileTemplate(viper.GetString(path))
}