From 74ab433f768cff083e2dd983ab716eb5482debe4 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Thu, 14 Dec 2017 13:21:01 -0500 Subject: [PATCH] update test Signed-off-by: Jess Frazelle --- Dockerfile.dind | 47 ----------------------------------------------- Makefile | 10 ++++------ main_test.go | 45 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 54 deletions(-) delete mode 100644 Dockerfile.dind diff --git a/Dockerfile.dind b/Dockerfile.dind deleted file mode 100644 index b33fff07..00000000 --- a/Dockerfile.dind +++ /dev/null @@ -1,47 +0,0 @@ -FROM alpine:3.3 - -# https://github.com/docker/docker/blob/master/project/PACKAGERS.md#runtime-dependencies -RUN apk add --no-cache \ - btrfs-progs \ - ca-certificates \ - curl \ - e2fsprogs \ - e2fsprogs-extra \ - iptables \ - xfsprogs \ - xz - -ENV DOCKER_BUCKET get.docker.com -ENV DOCKER_VERSION 1.11.1 -ENV DOCKER_SHA256 893e3c6e89c0cd2c5f1e51ea41bc2dd97f5e791fcfa3cee28445df277836339d - -RUN set -x \ - && curl -fSL "https://${DOCKER_BUCKET}/builds/Linux/x86_64/docker-$DOCKER_VERSION.tgz" -o docker.tgz \ - && echo "${DOCKER_SHA256} *docker.tgz" | sha256sum -c - \ - && tar -xzvf docker.tgz \ - && mv docker/* /usr/local/bin/ \ - && rmdir docker \ - && rm docker.tgz \ - && docker -v - -# we need adduser/useradd for userns -RUN apk add --no-cache \ - --repository http://dl-3.alpinelinux.org/alpine/edge/community/ \ - shadow - -ENV DIND_COMMIT 3b5fac462d21ca164b3778647420016315289034 - -RUN wget "https://raw.githubusercontent.com/docker/docker/${DIND_COMMIT}/hack/dind" -O /usr/local/bin/dind \ - && sed -i.bak 's/#!\/bin\/bash/#!\/bin\/sh/' /usr/local/bin/dind \ - && rm -rf /usr/local/bin/*.bak \ - && chmod +x /usr/local/bin/dind - -RUN touch /etc/subuid \ - && touch /etc/subgid - -EXPOSE 2375 - -COPY config /etc/docker/daemon/config -WORKDIR /etc/docker/daemon/config - -ENTRYPOINT ["./setup_certs.sh"] diff --git a/Makefile b/Makefile index fc466a1c..f36a1783 100644 --- a/Makefile +++ b/Makefile @@ -142,25 +142,23 @@ endif DIND_CONTAINER=reg-dind DIND_DOCKER_IMAGE=r.j3ss.co/docker:userns dind: ## Starts a docker-in-docker container for running the tests with - docker build --rm --force-rm -f Dockerfile.dind -t $(DIND_DOCKER_IMAGE) . docker run -d \ - -v /var/lib/docker2:/var/lib/docker \ --name $(DIND_CONTAINER) \ --privileged \ -v $(CURDIR)/.certs:/etc/docker/ssl \ -v $(CURDIR):/go/src/github.com/jessfraz/reg \ -v /tmp:/tmp \ $(DIND_DOCKER_IMAGE) \ - docker daemon -D --storage-driver $(DOCKER_GRAPHDRIVER) \ + dockerd -D --storage-driver $(DOCKER_GRAPHDRIVER) \ -H tcp://127.0.0.1:2375 \ --host=unix:///var/run/docker.sock \ --disable-legacy-registry=true \ --exec-opt=native.cgroupdriver=cgroupfs \ --insecure-registry localhost:5000 \ --tlsverify \ - --tlscacert=/etc/docker/ssl/ca.pem \ - --tlskey=/etc/docker/ssl/key.pem \ - --tlscert=/etc/docker/ssl/cert.pem + --tlscacert=/etc/docker/ssl/cacert.pem \ + --tlskey=/etc/docker/ssl/server.key \ + --tlscert=/etc/docker/ssl/server.cert .PHONY: dtest DOCKER_IMAGE := reg-dev diff --git a/main_test.go b/main_test.go index f5d59548..3cc05958 100644 --- a/main_test.go +++ b/main_test.go @@ -4,12 +4,16 @@ import ( "flag" "fmt" "log" + "net/http" "os" "os/exec" + "path/filepath" "runtime" "testing" + "github.com/docker/docker/api" "github.com/docker/docker/client" + "github.com/docker/go-connections/tlsconfig" "github.com/jessfraz/reg/testutils" ) @@ -57,7 +61,7 @@ func TestMain(m *testing.M) { defer os.Remove("testreg" + exeSuffix) // create the docker client - dcli, err := client.NewEnvClient() + dcli, err := newEnvDockerClient() if err != nil { panic(fmt.Errorf("could not connect to docker: %v", err)) } @@ -109,3 +113,42 @@ alpine latest t.Fatalf("expected: %s\ngot: %s", expected, out) } } + +func newEnvDockerClient() (*client.Client, error) { + var hc *http.Client + + if dockerCertPath := os.Getenv("DOCKER_CERT_PATH"); dockerCertPath != "" { + options := tlsconfig.Options{ + CAFile: filepath.Join(dockerCertPath, "cacert.pem"), + CertFile: filepath.Join(dockerCertPath, "server.cert"), + KeyFile: filepath.Join(dockerCertPath, "server.key"), + InsecureSkipVerify: os.Getenv("DOCKER_TLS_VERIFY") == "", + } + tlsc, err := tlsconfig.Client(options) + if err != nil { + return nil, err + } + + hc = &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: tlsc, + }, + CheckRedirect: client.CheckRedirect, + } + } + + host := os.Getenv("DOCKER_HOST") + if host == "" { + host = client.DefaultDockerHost + } + version := os.Getenv("DOCKER_API_VERSION") + if version == "" { + version = api.DefaultVersion + } + + cli, err := client.NewClient(host, version, hc, nil) + if err != nil { + return cli, err + } + return cli, nil +}