(operate string, composePath string, logPath string)
| 199 | } |
| 200 | |
| 201 | func runComposeCmdWithLog(operate string, composePath string, logPath string) error { |
| 202 | cmd := getComposeCmd(composePath, operate) |
| 203 | logFile, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, constant.FilePerm) |
| 204 | if err != nil { |
| 205 | global.LOG.Errorf("Failed to open log file: %v", err) |
| 206 | return err |
| 207 | } |
| 208 | defer logFile.Close() |
| 209 | multiWriterStdout := io.MultiWriter(os.Stdout, logFile) |
| 210 | cmd.Stdout = multiWriterStdout |
| 211 | var stderrBuf bytes.Buffer |
| 212 | multiWriterStderr := io.MultiWriter(&stderrBuf, logFile, os.Stderr) |
| 213 | cmd.Stderr = multiWriterStderr |
| 214 | |
| 215 | err = cmd.Run() |
| 216 | if err != nil { |
| 217 | return errors.New(buserr.New("ErrRuntimeStart").Error() + ":" + stderrBuf.String()) |
| 218 | } |
| 219 | return nil |
| 220 | } |
| 221 | |
| 222 | func SyncRuntimesStatus(runtimes []model.Runtime) error { |
| 223 | cli, err := docker.NewClient() |
no test coverage detected