From 7104b8126aec857e824030a568edd999b09e0704 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Tue, 1 Sep 2020 16:02:06 +0200 Subject: [PATCH] another hack-ish hack to support compose logs Signed-off-by: Nicolas De Loof --- ecs/local/compose.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/ecs/local/compose.go b/ecs/local/compose.go index 290871c05..ff4aa5c72 100644 --- a/ecs/local/compose.go +++ b/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) {