make slim image default, provide fully featured image

This commit is contained in:
Alex Goodman 2019-07-27 12:54:46 -04:00
parent f2b2d38622
commit 65f87b00a9
No known key found for this signature in database
GPG key ID: 98AF011C5C78EB7E
5 changed files with 37 additions and 14 deletions

View file

@ -24,7 +24,18 @@ dockers:
- "quay.io/wagoodman/dive:v{{ .Major }}"
- "quay.io/wagoodman/dive:v{{ .Major }}.{{ .Minor }}"
- "quay.io/wagoodman/dive:latest"
-
binary: dive
dockerfile: Dockerfile.full
image_templates:
- "wagoodman/dive:{{ .Tag }}-full"
- "wagoodman/dive:v{{ .Major }}-full"
- "wagoodman/dive:v{{ .Major }}.{{ .Minor }}-full"
- "wagoodman/dive:full"
- "quay.io/wagoodman/dive:{{ .Tag }}-full"
- "quay.io/wagoodman/dive:v{{ .Major }}-full"
- "quay.io/wagoodman/dive:v{{ .Major }}.{{ .Minor }}-full"
- "quay.io/wagoodman/dive:full"
archive:
format: tar.gz

View file

@ -1,15 +1,3 @@
FROM alpine:3.10
ARG DOCKER_CLI_VERSION="19.03.1"
ENV DOWNLOAD_URL="https://download.docker.com/linux/static/stable/x86_64/docker-$DOCKER_CLI_VERSION.tgz"
RUN apk --update add curl \
&& mkdir -p /tmp/download \
&& curl -L $DOWNLOAD_URL | tar -xz -C /tmp/download \
&& mv /tmp/download/docker/docker /usr/local/bin/ \
&& rm -rf /tmp/download \
&& apk del curl \
&& rm -rf /var/cache/apk/*
COPY dive /
ENTRYPOINT ["/dive"]

15
Dockerfile.full Normal file
View file

@ -0,0 +1,15 @@
FROM alpine:3.10
ARG DOCKER_CLI_VERSION="19.03.1"
ENV DOWNLOAD_URL="https://download.docker.com/linux/static/stable/x86_64/docker-$DOCKER_CLI_VERSION.tgz"
RUN apk --update add curl \
&& mkdir -p /tmp/download \
&& curl -L $DOWNLOAD_URL | tar -xz -C /tmp/download \
&& mv /tmp/download/docker/docker /usr/local/bin/ \
&& rm -rf /tmp/download \
&& apk del curl \
&& rm -rf /var/cache/apk/*
COPY dive /
ENTRYPOINT ["/dive"]

View file

@ -100,6 +100,11 @@ func (image *dockerImageAnalyzer) Fetch() (io.ReadCloser, error) {
}
_, _, err = image.client.ImageInspectWithRaw(ctx, image.id)
if err != nil {
if !utils.IsDockerClientAvailable() {
return nil, fmt.Errorf("cannot find docker client executable")
}
// don't use the API, the CLI has more informative output
fmt.Println("Image not available locally. Trying to pull '" + image.id + "'...")
err = utils.RunDockerCmd("pull", image.id)

View file

@ -6,9 +6,13 @@ import (
"strings"
)
func IsDockerClientAvailable() bool {
_, err := exec.LookPath("docker")
return err == nil
}
// RunDockerCmd runs a given Docker command in the current tty
func RunDockerCmd(cmdStr string, args ...string) error {
allArgs := cleanArgs(append([]string{cmdStr}, args...))
cmd := exec.Command("docker", allArgs...)