From daebdf3859ad3c912b068ea6b48e49f23c9ed0c2 Mon Sep 17 00:00:00 2001 From: Brent Baude Date: Fri, 9 Jul 2021 10:07:39 -0500 Subject: Add container config to compat image inspect With docker-compose, there is a use case where you can `docker-compose up -d`, then change a file like docker-compose.yml and run up again. This requires a ContainerConfig with at least Volumes be populated in the inspect data. This PR adds just that. Fixes: #10795 Signed-off-by: Brent Baude --- pkg/api/handlers/types.go | 43 ++++++++++++++++++--------------- test/compose/uptwice/Dockerfile | 2 ++ test/compose/uptwice/docker-compose.yml | 5 ++++ test/compose/uptwice/tests.sh | 4 +++ 4 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 test/compose/uptwice/Dockerfile create mode 100644 test/compose/uptwice/docker-compose.yml create mode 100644 test/compose/uptwice/tests.sh diff --git a/pkg/api/handlers/types.go b/pkg/api/handlers/types.go index ee157cb56..59f948567 100644 --- a/pkg/api/handlers/types.go +++ b/pkg/api/handlers/types.go @@ -232,27 +232,32 @@ func ImageDataToImageInspect(ctx context.Context, l *libimage.Image) (*ImageInsp Name: info.GraphDriver.Name, Data: info.GraphDriver.Data, } + // Add in basic ContainerConfig to satisfy docker-compose + cc := new(dockerContainer.Config) + cc.Hostname = info.ID[0:11] // short ID is the hostname + cc.Volumes = info.Config.Volumes + dockerImageInspect := docker.ImageInspect{ - Architecture: info.Architecture, - Author: info.Author, - Comment: info.Comment, - Config: &config, - Created: l.Created().Format(time.RFC3339Nano), - DockerVersion: info.Version, - GraphDriver: graphDriver, - ID: "sha256:" + l.ID(), - Metadata: docker.ImageMetadata{}, - Os: info.Os, - OsVersion: info.Version, - Parent: info.Parent, - RepoDigests: info.RepoDigests, - RepoTags: info.RepoTags, - RootFS: rootfs, - Size: info.Size, - Variant: "", - VirtualSize: info.VirtualSize, + Architecture: info.Architecture, + Author: info.Author, + Comment: info.Comment, + Config: &config, + ContainerConfig: cc, + Created: l.Created().Format(time.RFC3339Nano), + DockerVersion: info.Version, + GraphDriver: graphDriver, + ID: "sha256:" + l.ID(), + Metadata: docker.ImageMetadata{}, + Os: info.Os, + OsVersion: info.Version, + Parent: info.Parent, + RepoDigests: info.RepoDigests, + RepoTags: info.RepoTags, + RootFS: rootfs, + Size: info.Size, + Variant: "", + VirtualSize: info.VirtualSize, } - // TODO: consider filling the container config. return &ImageInspect{dockerImageInspect}, nil } diff --git a/test/compose/uptwice/Dockerfile b/test/compose/uptwice/Dockerfile new file mode 100644 index 000000000..b993af04d --- /dev/null +++ b/test/compose/uptwice/Dockerfile @@ -0,0 +1,2 @@ +FROM alpine +WORKDIR /app diff --git a/test/compose/uptwice/docker-compose.yml b/test/compose/uptwice/docker-compose.yml new file mode 100644 index 000000000..e06f9e554 --- /dev/null +++ b/test/compose/uptwice/docker-compose.yml @@ -0,0 +1,5 @@ +version: '3' +services: + app: + build: . + command: sleep 10002 diff --git a/test/compose/uptwice/tests.sh b/test/compose/uptwice/tests.sh new file mode 100644 index 000000000..291694d83 --- /dev/null +++ b/test/compose/uptwice/tests.sh @@ -0,0 +1,4 @@ +# -*- bash -*- + +sed -i -e 's/10001/10002/' docker-compose.yml +docker-compose up -d -- cgit v1.2.3-54-g00ecf