github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/test/docker/vault/vault.docker.go (about) 1 package vault 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 "sync" 8 "time" 9 10 "github.com/sirupsen/logrus" 11 12 "github.com/angryronald/go-kit/test/docker" 13 ) 14 15 var mu sync.Mutex 16 var upFlag bool 17 var port string 18 var host string 19 20 func init() { 21 port = docker.GetAvailablePort(8200) 22 host = "localhost" 23 upFlag = false 24 } 25 26 // StartVault starting vault in docker and returning active port and rootToken being used by vault container 27 func StartVault() (string, string) { 28 mu.Lock() 29 if !upFlag { 30 // availablePort := docker.GetAvailablePort(1080) 31 // Define the command you want to run 32 cmd := exec.Command("docker", "run", "-d", "--rm", "-p", fmt.Sprintf("%s:8200", port), "--name", "vault", "hashicorp/vault:latest", "vault", "server", "-dev", "-dev-root-token-id", "701432d1-00e7-7c94-10c4-8450ab3c4b31", "-dev-listen-address", "0.0.0.0:8200") 33 34 // Set the working directory to the location of your docker-compose.yml file 35 cmd.Dir = "." 36 37 // Capture and print the command's output 38 output, err := cmd.CombinedOutput() 39 if err != nil { 40 StopVaultWithoutLock() 41 logrus.Debug("Error:", err) 42 os.Exit(1) 43 } 44 45 logrus.Debug("Command Output:", string(output)) 46 47 time.Sleep(2 * time.Second) 48 49 cmd = exec.Command("docker", "ps", "-a") 50 51 // Capture and print the command's output 52 output, err = cmd.CombinedOutput() 53 if err != nil { 54 logrus.Debug("Error:", err) 55 os.Exit(1) 56 } 57 58 logrus.Debug("Command Output:", string(output)) 59 60 upFlag = true 61 62 time.Sleep(3 * time.Second) 63 } 64 mu.Unlock() 65 return port, vaultTestRootToken 66 } 67 68 func StopVaultWithoutLock() { 69 // Define the command you want to run 70 cmd := exec.Command("docker", "stop", "vault") 71 72 // Set the working directory to the location of your docker-compose.yml file 73 cmd.Dir = "." 74 75 // Capture and print the command's output 76 output, err := cmd.CombinedOutput() 77 if err != nil { 78 logrus.Debug("Error:", err) 79 os.Exit(1) 80 } 81 82 logrus.Debug("Command Output:", string(output)) 83 } 84 85 func StopVault() { 86 mu.Lock() 87 if upFlag { 88 StopVaultWithoutLock() 89 upFlag = false 90 } 91 mu.Unlock() 92 }