From fe363fd14622bc7825462a85a237c3f0e2464967 Mon Sep 17 00:00:00 2001 From: Guillaume Tardif Date: Mon, 7 Dec 2020 16:41:54 +0100 Subject: [PATCH 1/2] Fix compose volume creation and check this in volume e2e test Signed-off-by: Guillaume Tardif --- local/compose.go | 34 ++++++++++++------------ local/e2e/volume-test/docker-compose.yml | 10 +++++++ 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/local/compose.go b/local/compose.go index 221aea24..bddc292e 100644 --- a/local/compose.go +++ b/local/compose.go @@ -1086,24 +1086,24 @@ func (s *composeService) ensureVolume(ctx context.Context, volume types.VolumeCo // TODO could identify volume by label vs name _, err := s.apiClient.VolumeInspect(ctx, volume.Name) if err != nil { - if errdefs.IsNotFound(err) { - eventName := fmt.Sprintf("Volume %q", volume.Name) - w := progress.ContextWriter(ctx) - w.Event(progress.CreatingEvent(eventName)) - // TODO we miss support for driver_opts and labels - _, err := s.apiClient.VolumeCreate(ctx, mobyvolume.VolumeCreateBody{ - Labels: volume.Labels, - Name: volume.Name, - Driver: volume.Driver, - DriverOpts: volume.DriverOpts, - }) - if err != nil { - w.Event(progress.ErrorEvent(eventName)) - return err - } - w.Event(progress.CreatedEvent(eventName)) + if !errdefs.IsNotFound(err) { + return err } - return err + eventName := fmt.Sprintf("Volume %q", volume.Name) + w := progress.ContextWriter(ctx) + w.Event(progress.CreatingEvent(eventName)) + // TODO we miss support for driver_opts and labels + _, err := s.apiClient.VolumeCreate(ctx, mobyvolume.VolumeCreateBody{ + Labels: volume.Labels, + Name: volume.Name, + Driver: volume.Driver, + DriverOpts: volume.DriverOpts, + }) + if err != nil { + w.Event(progress.ErrorEvent(eventName)) + return err + } + w.Event(progress.CreatedEvent(eventName)) } return nil } diff --git a/local/e2e/volume-test/docker-compose.yml b/local/e2e/volume-test/docker-compose.yml index 0c1df0c2..2574ed0e 100644 --- a/local/e2e/volume-test/docker-compose.yml +++ b/local/e2e/volume-test/docker-compose.yml @@ -5,3 +5,13 @@ services: - ./static:/usr/share/nginx/html ports: - 8090:80 + + nginx2: + build: nginx-build + volumes: + - staticVol:/usr/share/nginx/html + ports: + - 9090:80 + +volumes: + staticVol: \ No newline at end of file From d0728d94f2494c6bf2888e49198884313ad7a337 Mon Sep 17 00:00:00 2001 From: Guillaume Tardif Date: Mon, 7 Dec 2020 16:57:55 +0100 Subject: [PATCH 2/2] Fix compose volume creation and check this in volume e2e test Signed-off-by: Guillaume Tardif --- local/e2e/compose_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/local/e2e/compose_test.go b/local/e2e/compose_test.go index f17c8e3d..0a161dea 100644 --- a/local/e2e/compose_test.go +++ b/local/e2e/compose_test.go @@ -95,12 +95,14 @@ func TestLocalComposeVolume(t *testing.T) { t.Run("up with build and no image name, volume", func(t *testing.T) { //ensure local test run does not reuse previously build image - c.RunDockerOrExitError("--context", "default", "rmi", "compose-e2e-volume_nginx") + c.RunDockerOrExitError("rmi", "compose-e2e-volume_nginx") + c.RunDockerOrExitError("volume", "rm", projectName+"_staticVol") c.RunDockerCmd("compose", "up", "-d", "--workdir", "volume-test", "--project-name", projectName) output := HTTPGetWithRetry(t, "http://localhost:8090", http.StatusOK, 2*time.Second, 20*time.Second) assert.Assert(t, strings.Contains(output, "Hello from Nginx container")) _ = c.RunDockerCmd("compose", "down", "--project-name", projectName) + _ = c.RunDockerCmd("volume", "rm", projectName+"_staticVol") }) }