github.com/zhouyu0/docker-note@v0.0.0-20190722021225-b8d3825084db/Dockerfile.e2e (about)

     1  ## Step 1: Build tests
     2  FROM golang:1.10.8-alpine3.7 as builder
     3  
     4  RUN apk add --update \
     5      bash \
     6      btrfs-progs-dev \
     7      build-base \
     8      curl \
     9      lvm2-dev \
    10      jq \
    11      && rm -rf /var/cache/apk/*
    12  
    13  RUN mkdir -p /go/src/github.com/docker/docker/
    14  WORKDIR /go/src/github.com/docker/docker/
    15  
    16  # Generate frozen images
    17  COPY contrib/download-frozen-image-v2.sh contrib/download-frozen-image-v2.sh
    18  RUN contrib/download-frozen-image-v2.sh /output/docker-frozen-images \
    19  	buildpack-deps:jessie@sha256:dd86dced7c9cd2a724e779730f0a53f93b7ef42228d4344b25ce9a42a1486251 \
    20  	busybox:latest@sha256:bbc3a03235220b170ba48a157dd097dd1379299370e1ed99ce976df0355d24f0 \
    21  	busybox:glibc@sha256:0b55a30394294ab23b9afd58fab94e61a923f5834fba7ddbae7f8e0c11ba85e6 \
    22  	debian:jessie@sha256:287a20c5f73087ab406e6b364833e3fb7b3ae63ca0eb3486555dc27ed32c6e60 \
    23  	hello-world:latest@sha256:be0cd392e45be79ffeffa6b05338b98ebb16c87b255f48e297ec7f98e123905c
    24  
    25  # Install dockercli
    26  # Please edit hack/dockerfile/install/<name>.installer to update them.
    27  COPY hack/dockerfile/install hack/dockerfile/install
    28  RUN ./hack/dockerfile/install/install.sh dockercli
    29  
    30  # Set tag and add sources
    31  ARG DOCKER_GITCOMMIT
    32  ENV DOCKER_GITCOMMIT=${DOCKER_GITCOMMIT:-undefined}
    33  ADD . .
    34  
    35  # Build DockerSuite.TestBuild* dependency
    36  RUN CGO_ENABLED=0 go build -buildmode=pie -o /output/httpserver github.com/docker/docker/contrib/httpserver
    37  
    38  # Build the integration tests and copy the resulting binaries to /output/tests
    39  RUN hack/make.sh build-integration-test-binary
    40  RUN mkdir -p /output/tests && find . -name test.main -exec cp --parents '{}' /output/tests \;
    41  
    42  ## Step 2: Generate testing image
    43  FROM alpine:3.7 as runner
    44  
    45  # GNU tar is used for generating the emptyfs image
    46  RUN apk add --update \
    47      bash \
    48      ca-certificates \
    49      g++ \
    50      git \
    51      iptables \
    52      pigz \
    53      tar \
    54      xz \
    55      && rm -rf /var/cache/apk/*
    56  
    57  # Add an unprivileged user to be used for tests which need it
    58  RUN addgroup docker && adduser -D -G docker unprivilegeduser -s /bin/ash
    59  
    60  COPY contrib/httpserver/Dockerfile /tests/contrib/httpserver/Dockerfile
    61  COPY contrib/syscall-test /tests/contrib/syscall-test
    62  COPY integration-cli/fixtures /tests/integration-cli/fixtures
    63  
    64  COPY hack/test/e2e-run.sh /scripts/run.sh
    65  COPY hack/make/.ensure-emptyfs /scripts/ensure-emptyfs.sh
    66  
    67  COPY --from=builder /output/docker-frozen-images /docker-frozen-images
    68  COPY --from=builder /output/httpserver /tests/contrib/httpserver/httpserver
    69  COPY --from=builder /output/tests /tests
    70  COPY --from=builder /usr/local/bin/docker /usr/bin/docker
    71  
    72  ENV DOCKER_REMOTE_DAEMON=1 DOCKER_INTEGRATION_DAEMON_DEST=/
    73  
    74  ENTRYPOINT ["/scripts/run.sh"]