From 3ef62aba45482bb5e7fb42ab34aceb81a4e38dc3 Mon Sep 17 00:00:00 2001 From: v-weiyding Date: Thu, 14 Nov 2024 15:58:34 +0800 Subject: [PATCH 1/6] fix-issue#393 --- cli/azd/cmd/up.go | 12 ++++++++++++ cli/azd/pkg/tools/docker/docker.go | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/cli/azd/cmd/up.go b/cli/azd/cmd/up.go index 43b3418ac35..4d74eb83016 100644 --- a/cli/azd/cmd/up.go +++ b/cli/azd/cmd/up.go @@ -20,6 +20,7 @@ import ( "github.com/azure/azure-dev/cli/azd/pkg/project" "github.com/azure/azure-dev/cli/azd/pkg/prompt" "github.com/azure/azure-dev/cli/azd/pkg/workflow" + "github.com/azure/azure-dev/cli/azd/pkg/tools/docker" "github.com/spf13/cobra" "github.com/spf13/pflag" ) @@ -65,6 +66,7 @@ type upAction struct { prompters prompt.Prompter importManager *project.ImportManager workflowRunner *workflow.Runner + docker *docker.Cli } var defaultUpWorkflow = &workflow.Workflow{ @@ -87,6 +89,7 @@ func newUpAction( prompters prompt.Prompter, importManager *project.ImportManager, workflowRunner *workflow.Runner, + docker *docker.Cli, ) actions.Action { return &upAction{ flags: flags, @@ -98,6 +101,7 @@ func newUpAction( prompters: prompters, importManager: importManager, workflowRunner: workflowRunner, + docker: docker, } } @@ -121,6 +125,14 @@ func (u *upAction) Run(ctx context.Context) (*actions.ActionResult, error) { return nil, err } + for _, service := range u.projectConfig.Services { + if service.Host == "containerapp" && !service.Docker.RemoteBuild { + if err := u.docker.IsDockerRunning(ctx); err != nil { + return nil, err + } + } + } + startTime := time.Now() upWorkflow, has := u.projectConfig.Workflows["up"] diff --git a/cli/azd/pkg/tools/docker/docker.go b/cli/azd/pkg/tools/docker/docker.go index e524468bcef..82e6a4d825c 100644 --- a/cli/azd/pkg/tools/docker/docker.go +++ b/cli/azd/pkg/tools/docker/docker.go @@ -305,3 +305,12 @@ func SplitDockerImage(fullImg string) (name string, tag string) { return fullImg[:split], fullImg[split+1:] } + +func (d *Cli) IsDockerRunning(ctx context.Context) error { + _, err := d.executeCommand(ctx, "", "ps") + if err != nil { + return fmt.Errorf("docker is not running: %w", err) + } + + return nil +} \ No newline at end of file From 7a93e52a50112f0911465f3175a238fd9001a60b Mon Sep 17 00:00:00 2001 From: v-weiyding Date: Tue, 19 Nov 2024 14:46:11 +0800 Subject: [PATCH 2/6] Update --- cli/azd/cmd/up.go | 29 +++++++++++++++++++++-------- cli/azd/pkg/tools/docker/docker.go | 13 ++++--------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/cli/azd/cmd/up.go b/cli/azd/cmd/up.go index 4d74eb83016..3030ea2890b 100644 --- a/cli/azd/cmd/up.go +++ b/cli/azd/cmd/up.go @@ -20,6 +20,7 @@ import ( "github.com/azure/azure-dev/cli/azd/pkg/project" "github.com/azure/azure-dev/cli/azd/pkg/prompt" "github.com/azure/azure-dev/cli/azd/pkg/workflow" + "github.com/azure/azure-dev/cli/azd/pkg/tools" "github.com/azure/azure-dev/cli/azd/pkg/tools/docker" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -125,14 +126,6 @@ func (u *upAction) Run(ctx context.Context) (*actions.ActionResult, error) { return nil, err } - for _, service := range u.projectConfig.Services { - if service.Host == "containerapp" && !service.Docker.RemoteBuild { - if err := u.docker.IsDockerRunning(ctx); err != nil { - return nil, err - } - } - } - startTime := time.Now() upWorkflow, has := u.projectConfig.Workflows["up"] @@ -142,6 +135,26 @@ func (u *upAction) Run(ctx context.Context) (*actions.ActionResult, error) { u.console.Message(ctx, output.WithGrayFormat("Note: Running custom 'up' workflow from azure.yaml")) } + isCheckDocker := false + outer: + for _, step := range upWorkflow.Steps { + if step.AzdCommand.Args[0] != "deploy" { + continue + } + for _, service := range u.projectConfig.Services { + if service.Host == "containerapp" && !service.Docker.RemoteBuild { + isCheckDocker = true + break outer + } + } + } + + if isCheckDocker { + if err := tools.EnsureInstalled(ctx, []tools.ExternalTool{u.docker}...); err != nil { + return nil, err + } + } + if err := u.workflowRunner.Run(ctx, upWorkflow); err != nil { return nil, err } diff --git a/cli/azd/pkg/tools/docker/docker.go b/cli/azd/pkg/tools/docker/docker.go index 82e6a4d825c..0fc803841da 100644 --- a/cli/azd/pkg/tools/docker/docker.go +++ b/cli/azd/pkg/tools/docker/docker.go @@ -263,6 +263,10 @@ func (d *Cli) CheckInstalled(ctx context.Context) error { if !supported { return &tools.ErrSemver{ToolName: d.Name(), VersionInfo: d.versionInfo()} } + // Check if docker is running + if _, err := tools.ExecuteCommand(ctx, d.commandRunner, "docker", "ps"); err != nil { + return err + } return nil } @@ -304,13 +308,4 @@ func SplitDockerImage(fullImg string) (name string, tag string) { } return fullImg[:split], fullImg[split+1:] -} - -func (d *Cli) IsDockerRunning(ctx context.Context) error { - _, err := d.executeCommand(ctx, "", "ps") - if err != nil { - return fmt.Errorf("docker is not running: %w", err) - } - - return nil } \ No newline at end of file From c52299181c7d87535975f74027fc2336c2667b9d Mon Sep 17 00:00:00 2001 From: v-weiyding Date: Tue, 19 Nov 2024 14:50:48 +0800 Subject: [PATCH 3/6] Update --- cli/azd/pkg/tools/docker/docker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/azd/pkg/tools/docker/docker.go b/cli/azd/pkg/tools/docker/docker.go index 0fc803841da..db2b7c8b1be 100644 --- a/cli/azd/pkg/tools/docker/docker.go +++ b/cli/azd/pkg/tools/docker/docker.go @@ -308,4 +308,4 @@ func SplitDockerImage(fullImg string) (name string, tag string) { } return fullImg[:split], fullImg[split+1:] -} \ No newline at end of file +} From 707f43d97b04bbe519d4c6c4e8f205641804f24d Mon Sep 17 00:00:00 2001 From: v-weiyding Date: Tue, 19 Nov 2024 17:43:07 +0800 Subject: [PATCH 4/6] Update --- cli/azd/cmd/up.go | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/cli/azd/cmd/up.go b/cli/azd/cmd/up.go index 3030ea2890b..43b3418ac35 100644 --- a/cli/azd/cmd/up.go +++ b/cli/azd/cmd/up.go @@ -20,8 +20,6 @@ import ( "github.com/azure/azure-dev/cli/azd/pkg/project" "github.com/azure/azure-dev/cli/azd/pkg/prompt" "github.com/azure/azure-dev/cli/azd/pkg/workflow" - "github.com/azure/azure-dev/cli/azd/pkg/tools" - "github.com/azure/azure-dev/cli/azd/pkg/tools/docker" "github.com/spf13/cobra" "github.com/spf13/pflag" ) @@ -67,7 +65,6 @@ type upAction struct { prompters prompt.Prompter importManager *project.ImportManager workflowRunner *workflow.Runner - docker *docker.Cli } var defaultUpWorkflow = &workflow.Workflow{ @@ -90,7 +87,6 @@ func newUpAction( prompters prompt.Prompter, importManager *project.ImportManager, workflowRunner *workflow.Runner, - docker *docker.Cli, ) actions.Action { return &upAction{ flags: flags, @@ -102,7 +98,6 @@ func newUpAction( prompters: prompters, importManager: importManager, workflowRunner: workflowRunner, - docker: docker, } } @@ -135,26 +130,6 @@ func (u *upAction) Run(ctx context.Context) (*actions.ActionResult, error) { u.console.Message(ctx, output.WithGrayFormat("Note: Running custom 'up' workflow from azure.yaml")) } - isCheckDocker := false - outer: - for _, step := range upWorkflow.Steps { - if step.AzdCommand.Args[0] != "deploy" { - continue - } - for _, service := range u.projectConfig.Services { - if service.Host == "containerapp" && !service.Docker.RemoteBuild { - isCheckDocker = true - break outer - } - } - } - - if isCheckDocker { - if err := tools.EnsureInstalled(ctx, []tools.ExternalTool{u.docker}...); err != nil { - return nil, err - } - } - if err := u.workflowRunner.Run(ctx, upWorkflow); err != nil { return nil, err } From d38d2f5863183650ccc0c2133dd188ae65837458 Mon Sep 17 00:00:00 2001 From: v-weiyding Date: Fri, 22 Nov 2024 16:45:38 +0800 Subject: [PATCH 5/6] update error message --- cli/azd/pkg/tools/docker/docker.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/azd/pkg/tools/docker/docker.go b/cli/azd/pkg/tools/docker/docker.go index db2b7c8b1be..8456aa60ae6 100644 --- a/cli/azd/pkg/tools/docker/docker.go +++ b/cli/azd/pkg/tools/docker/docker.go @@ -263,9 +263,9 @@ func (d *Cli) CheckInstalled(ctx context.Context) error { if !supported { return &tools.ErrSemver{ToolName: d.Name(), VersionInfo: d.versionInfo()} } - // Check if docker is running + // Check if docker daemon is running if _, err := tools.ExecuteCommand(ctx, d.commandRunner, "docker", "ps"); err != nil { - return err + return fmt.Errorf("the Docker daemon is not running, please start the Docker service: %w", err) } return nil } From 84fc3c2846c4cb99ae42c2b77dd5a82c320137ab Mon Sep 17 00:00:00 2001 From: v-weiyding Date: Fri, 6 Dec 2024 10:41:15 +0800 Subject: [PATCH 6/6] update --- cli/azd/pkg/tools/docker/docker.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cli/azd/pkg/tools/docker/docker.go b/cli/azd/pkg/tools/docker/docker.go index 8456aa60ae6..2278ae6026c 100644 --- a/cli/azd/pkg/tools/docker/docker.go +++ b/cli/azd/pkg/tools/docker/docker.go @@ -247,13 +247,14 @@ func isSupportedDockerVersion(cliOutput string) (bool, error) { return false, fmt.Errorf("could not determine version from docker version string: %s", version) } func (d *Cli) CheckInstalled(ctx context.Context) error { + toolName := d.Name() err := tools.ToolInPath("docker") if err != nil { return err } dockerRes, err := tools.ExecuteCommand(ctx, d.commandRunner, "docker", "--version") if err != nil { - return fmt.Errorf("checking %s version: %w", d.Name(), err) + return fmt.Errorf("checking %s version: %w", toolName, err) } log.Printf("docker version: %s", dockerRes) supported, err := isSupportedDockerVersion(dockerRes) @@ -261,11 +262,11 @@ func (d *Cli) CheckInstalled(ctx context.Context) error { return err } if !supported { - return &tools.ErrSemver{ToolName: d.Name(), VersionInfo: d.versionInfo()} + return &tools.ErrSemver{ToolName: toolName, VersionInfo: d.versionInfo()} } // Check if docker daemon is running if _, err := tools.ExecuteCommand(ctx, d.commandRunner, "docker", "ps"); err != nil { - return fmt.Errorf("the Docker daemon is not running, please start the Docker service: %w", err) + return fmt.Errorf("the %s daemon is not running, please start the %s service: %w", toolName, toolName, err) } return nil }