From 422ccbbb92d932c2bb1ff8e8b497b6efa42af4bd Mon Sep 17 00:00:00 2001 From: g41797 Date: Sun, 8 Oct 2023 10:12:05 +0300 Subject: [PATCH] Add docker-compose up/down --- sidecar/starter.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 sidecar/starter.go diff --git a/sidecar/starter.go b/sidecar/starter.go new file mode 100644 index 0000000..31df972 --- /dev/null +++ b/sidecar/starter.go @@ -0,0 +1,53 @@ +package sidecar + +import ( + "fmt" + "os" + "os/exec" + "path" +) + +func StartServices() (stopServices func(), err error) { + + confFolder, err := ConfFolder() + if err != nil { + return nil, err + } + + composePath := path.Join(confFolder, "docker-compose.yml") + + return StartServicesWithCompose(composePath) +} + +func StartServicesWithCompose(composePath string) (stopServices func(), err error) { + _, err = os.ReadFile(composePath) + + if err != nil { + fmt.Println("docker-compose.yml does not exist. Please start required services manually") + return func() {}, nil + } + + go newCompositeCmd(composePath, "up").Run() + + return newCompositeCmd(composePath, "down").Run, nil +} + +type compositeCmd struct { + composePath string + command string +} + +func newCompositeCmd(composePath, command string) *compositeCmd { + result := compositeCmd{command: command, composePath: composePath} + return &result +} + +func (cmd *compositeCmd) Run() { + osCMD := exec.Command("docker") + osCMD.Args = append(osCMD.Args, "compose") + osCMD.Args = append(osCMD.Args, "-f") + osCMD.Args = append(osCMD.Args, cmd.composePath) + osCMD.Args = append(osCMD.Args, cmd.command) + osCMD.Run() + return +}