github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/Dockerfile.e2e (about)

     1  ARG GO_VERSION=1.19.7
     2  
     3  FROM golang:${GO_VERSION}-alpine AS base
     4  ENV GO111MODULE=off
     5  RUN apk --no-cache add \
     6      bash \
     7      btrfs-progs-dev \
     8      build-base \
     9      curl \
    10      lvm2-dev \
    11      jq
    12  
    13  RUN mkdir -p /build/
    14  RUN mkdir -p /go/src/github.com/docker/docker/
    15  WORKDIR /go/src/github.com/docker/docker/
    16  
    17  FROM base AS frozen-images
    18  # Get useful and necessary Hub images so we can "docker load" locally instead of pulling
    19  COPY contrib/download-frozen-image-v2.sh /
    20  RUN /download-frozen-image-v2.sh /build \
    21      busybox:latest@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209 \
    22  	busybox:latest@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209 \
    23  	busybox:glibc@sha256:1f81263701cddf6402afe9f33fca0266d9fff379e59b1748f33d3072da71ee85 \
    24  	debian:bullseye-slim@sha256:dacf278785a4daa9de07596ec739dbc07131e189942772210709c5c0777e8437 \
    25  	hello-world:latest@sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
    26  # See also frozenImages in "testutil/environment/protect.go" (which needs to be updated when adding images to this list)
    27  
    28  FROM base AS dockercli
    29  ENV INSTALL_BINARY_NAME=dockercli
    30  COPY hack/dockerfile/install/install.sh ./install.sh
    31  COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
    32  RUN PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
    33  
    34  # Build DockerSuite.TestBuild* dependency
    35  FROM base AS contrib
    36  COPY contrib/syscall-test           /build/syscall-test
    37  COPY contrib/httpserver/Dockerfile  /build/httpserver/Dockerfile
    38  COPY contrib/httpserver             contrib/httpserver
    39  RUN CGO_ENABLED=0 go build -buildmode=pie -o /build/httpserver/httpserver github.com/docker/docker/contrib/httpserver
    40  
    41  # Build the integration tests and copy the resulting binaries to /build/tests
    42  FROM base AS builder
    43  
    44  # Set tag and add sources
    45  COPY . .
    46  # Copy test sources tests that use assert can print errors
    47  RUN mkdir -p /build${PWD} && find integration integration-cli -name \*_test.go -exec cp --parents '{}' /build${PWD} \;
    48  # Build and install test binaries
    49  ARG DOCKER_GITCOMMIT=undefined
    50  RUN hack/make.sh build-integration-test-binary
    51  RUN mkdir -p /build/tests && find . -name test.main -exec cp --parents '{}' /build/tests \;
    52  
    53  ## Generate testing image
    54  FROM alpine:3.10 as runner
    55  
    56  ENV DOCKER_REMOTE_DAEMON=1
    57  ENV DOCKER_INTEGRATION_DAEMON_DEST=/
    58  ENTRYPOINT ["/scripts/run.sh"]
    59  
    60  # Add an unprivileged user to be used for tests which need it
    61  RUN addgroup docker && adduser -D -G docker unprivilegeduser -s /bin/ash
    62  
    63  # GNU tar is used for generating the emptyfs image
    64  RUN apk --no-cache add \
    65      bash \
    66      ca-certificates \
    67      g++ \
    68      git \
    69      iptables \
    70      pigz \
    71      tar \
    72      xz
    73  
    74  COPY hack/test/e2e-run.sh       /scripts/run.sh
    75  COPY hack/make/.ensure-emptyfs  /scripts/ensure-emptyfs.sh
    76  
    77  COPY integration/testdata       /tests/integration/testdata
    78  COPY integration/build/testdata /tests/integration/build/testdata
    79  COPY integration-cli/fixtures   /tests/integration-cli/fixtures
    80  
    81  COPY --from=frozen-images /build/ /docker-frozen-images
    82  COPY --from=dockercli     /build/ /usr/bin/
    83  COPY --from=contrib       /build/ /tests/contrib/
    84  COPY --from=builder       /build/ /