Explorar o código

another hack-ish hack to support compose logs

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof %!s(int64=5) %!d(string=hai) anos
pai
achega
7104b8126a
Modificáronse 1 ficheiros con 27 adicións e 1 borrados
  1. 27 1
      ecs/local/compose.go

+ 27 - 1
ecs/local/compose.go

@@ -27,6 +27,9 @@ import (
 	"path/filepath"
 	"strings"
 
+	types2 "github.com/docker/docker/api/types"
+	"github.com/docker/docker/api/types/filters"
+
 	"github.com/docker/compose-cli/compose"
 	"github.com/docker/compose-cli/errdefs"
 
@@ -145,7 +148,30 @@ services:
 }
 
 func (e ecsLocalSimulation) Logs(ctx context.Context, projectName string, w io.Writer) error {
-	return errors.Wrap(errdefs.ErrNotImplemented, "use docker-compose logs")
+	list, err := e.moby.ContainerList(ctx, types2.ContainerListOptions{
+		Filters: filters.NewArgs(filters.Arg("label", "com.docker.compose.project="+projectName)),
+	})
+	if err != nil {
+		return err
+	}
+	services := map[string]types.ServiceConfig{}
+	for _, c := range list {
+		services[c.Labels["com.docker.compose.service"]] = types.ServiceConfig{
+			Image: "unused",
+		}
+	}
+
+	marshal, err := yaml.Marshal(map[string]interface{}{
+		"services": services,
+	})
+	if err != nil {
+		return err
+	}
+	cmd := exec.Command("docker-compose", "--context", "default", "--project-name", projectName, "-f", "-", "logs", "-f")
+	cmd.Stdin = strings.NewReader(string(marshal))
+	cmd.Stdout = os.Stdout
+	cmd.Stderr = os.Stderr
+	return cmd.Run()
 }
 
 func (e ecsLocalSimulation) Ps(ctx context.Context, projectName string) ([]compose.ServiceStatus, error) {