update test

Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
This commit is contained in:
Jess Frazelle 2017-12-14 13:21:01 -05:00
parent 758d45bea2
commit 74ab433f76
No known key found for this signature in database
GPG key ID: 18F3685C0022BFF3
3 changed files with 48 additions and 54 deletions

View file

@ -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"]

View file

@ -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

View file

@ -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
}