-
Notifications
You must be signed in to change notification settings - Fork 41
/
docker.go
88 lines (75 loc) · 2.64 KB
/
docker.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package cli
import (
"fmt"
"os/exec"
"path/filepath"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
const (
DockerLocalnetPath = "../../../docker/localnet"
DockerComposeFile = "docker-compose.yml"
DockerComposeEnvML = "mainnet-latest.env"
DockerComposeEnvBL = "build-latest.env"
Docker = "docker"
DockerCompose = "compose"
DockerHome = "/home/cheqd"
DockerUser = "cheqd"
DockerUserGroup = "cheqd"
Operator0 = "operator-0"
Operator1 = "operator-1"
Operator2 = "operator-2"
Operator3 = "operator-3"
Validator0 = "validator-0"
Validator1 = "validator-1"
Validator2 = "validator-2"
Validator3 = "validator-3"
ValidatorsCount = 4
)
type OperatorAccountType map[string]string
var OperatorAccounts = OperatorAccountType{
Validator0: Operator0,
Validator1: Operator1,
Validator2: Operator2,
Validator3: Operator3,
}
var ValidatorNodes = []string{Validator0, Validator1, Validator2, Validator3}
var (
DockerComposeLatestArgs = []string{
"-f", filepath.Join(DockerLocalnetPath, DockerComposeFile),
"--env-file", filepath.Join(DockerLocalnetPath, DockerComposeEnvML),
}
DockerComposeBuildArgs = []string{
"-f", filepath.Join(DockerLocalnetPath, DockerComposeFile),
"--env-file", filepath.Join(DockerLocalnetPath, DockerComposeEnvBL),
}
)
func LocalnetExec(envArgs []string, args ...string) (string, error) {
args = append(append([]string{DockerCompose}, envArgs...), args...)
cmd := exec.Command(Docker, args...)
out, err := cmd.CombinedOutput()
if err != nil {
return string(out), sdkerrors.Wrap(err, string(out))
}
return string(out), err
}
func LocalnetExecExec(container string, args ...string) (string, error) {
args = append([]string{"exec", container}, args...)
return LocalnetExec(DockerComposeLatestArgs, args...)
}
func LocalnetExecUp() (string, error) {
return LocalnetExec(DockerComposeLatestArgs, "up", "--detach", "--no-build")
}
func LocalnetExecDown() (string, error) {
return LocalnetExec(DockerComposeLatestArgs, "down")
}
func LocalnetExecCopyAbsoluteWithPermissions(path string, destination string, container string) (string, error) {
_, err := LocalnetExec(DockerComposeLatestArgs, "cp", path, container+":"+destination)
if err != nil {
fmt.Println("Error copying file to container: ", err)
return "", err
}
return LocalnetExecRestorePermissions(destination, container)
}
func LocalnetExecRestorePermissions(path string, container string) (string, error) {
return LocalnetExec(DockerComposeLatestArgs, "exec", "-it", "--user", "root", container, "chown", "-R", DockerUser+":"+DockerUserGroup, path)
}