in executors/docker/executor_docker.go [1197:1235]
func (s *executor) waitForServiceContainer(service *types.Container, timeout time.Duration) error {
err := s.runServiceHealthCheckContainer(service, timeout)
if err == nil {
return nil
}
var buffer bytes.Buffer
buffer.WriteString("\n")
buffer.WriteString(helpers.ANSI_YELLOW + "*** WARNING:" + helpers.ANSI_RESET + " Service " + service.Names[0] + " probably didn't start properly.\n")
buffer.WriteString("\n")
buffer.WriteString(strings.TrimSpace(err.Error()) + "\n")
var containerBuffer bytes.Buffer
options := types.ContainerLogsOptions{
ShowStdout: true,
ShowStderr: true,
Timestamps: true,
}
hijacked, err := s.client.ContainerLogs(s.Context, service.ID, options)
if err == nil {
defer hijacked.Close()
stdcopy.StdCopy(&containerBuffer, &containerBuffer, hijacked)
if containerLog := containerBuffer.String(); containerLog != "" {
buffer.WriteString("\n")
buffer.WriteString(strings.TrimSpace(containerLog))
buffer.WriteString("\n")
}
} else {
buffer.WriteString(strings.TrimSpace(err.Error()) + "\n")
}
buffer.WriteString("\n")
buffer.WriteString(helpers.ANSI_YELLOW + "*********" + helpers.ANSI_RESET + "\n")
buffer.WriteString("\n")
io.Copy(s.Trace, &buffer)
return err
}