|
@@ -23,8 +23,7 @@
|
|
|
# the case. Therefore, you don't have to disable it anymore.
|
|
|
#
|
|
|
|
|
|
-FROM ioft/armhf-ubuntu:14.04
|
|
|
-MAINTAINER Govinda Fichtner <govinda.fichtner@googlemail.com> (@_beagile_)
|
|
|
+FROM armhf/ubuntu:trusty
|
|
|
|
|
|
# Packaged dependencies
|
|
|
RUN apt-get update && apt-get install -y \
|
|
@@ -40,6 +39,7 @@ RUN apt-get update && apt-get install -y \
|
|
|
git \
|
|
|
iptables \
|
|
|
jq \
|
|
|
+ net-tools \
|
|
|
libapparmor-dev \
|
|
|
libcap-dev \
|
|
|
libltdl-dev \
|
|
@@ -52,38 +52,47 @@ RUN apt-get update && apt-get install -y \
|
|
|
python-mock \
|
|
|
python-pip \
|
|
|
python-websocket \
|
|
|
- s3cmd=1.1.0* \
|
|
|
xfsprogs \
|
|
|
tar \
|
|
|
--no-install-recommends
|
|
|
|
|
|
# Get lvm2 source for compiling statically
|
|
|
-RUN git clone -b v2_02_103 https://git.fedorahosted.org/git/lvm2.git /usr/local/lvm2
|
|
|
+ENV LVM2_VERSION 2.02.103
|
|
|
+RUN mkdir -p /usr/local/lvm2 \
|
|
|
+ && curl -fsSL "https://mirrors.kernel.org/sourceware/lvm2/LVM2.${LVM2_VERSION}.tgz" \
|
|
|
+ | tar -xzC /usr/local/lvm2 --strip-components=1
|
|
|
# see https://git.fedorahosted.org/cgit/lvm2.git/refs/tags for release tags
|
|
|
|
|
|
# Compile and install lvm2
|
|
|
RUN cd /usr/local/lvm2 \
|
|
|
- && ./configure --enable-static_link \
|
|
|
+ && ./configure \
|
|
|
+ --build="$(gcc -print-multiarch)" \
|
|
|
+ --enable-static_link \
|
|
|
&& make device-mapper \
|
|
|
&& make install_device-mapper
|
|
|
# see https://git.fedorahosted.org/cgit/lvm2.git/tree/INSTALL
|
|
|
|
|
|
# Install Go
|
|
|
-ENV GO_VERSION 1.4.3
|
|
|
+#ENV GO_VERSION 1.5.2
|
|
|
# TODO update GO_TOOLS_COMMIT below when this updates to 1.5+
|
|
|
-RUN curl -fsSL https://golang.org/dl/go${GO_VERSION}.src.tar.gz | tar -v -C /usr/local -xz
|
|
|
+ENV GO_VERSION 1.4.3
|
|
|
+RUN curl -fsSL "https://github.com/hypriot/golang-armbuilds/releases/download/v${GO_VERSION}/go${GO_VERSION}.linux-armv7.tar.gz" \
|
|
|
+ | tar -xzC /usr/local
|
|
|
+# temporarily using Hypriot's tarballs while we wait for official 1.6+
|
|
|
+#RUN curl -fsSL https://golang.org/dl/go${GO_VERSION}.linux-arm6.tar.gz \
|
|
|
+# | tar -xzC /usr/local
|
|
|
ENV PATH /go/bin:/usr/local/go/bin:$PATH
|
|
|
ENV GOPATH /go:/go/src/github.com/docker/docker/vendor
|
|
|
|
|
|
# we're building for armhf, which is ARMv7, so let's be explicit about that
|
|
|
+ENV GOARCH arm
|
|
|
ENV GOARM 7
|
|
|
|
|
|
-RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1
|
|
|
-
|
|
|
# This has been commented out and kept as reference because we don't support compiling with older Go anymore.
|
|
|
# ENV GOFMT_VERSION 1.3.3
|
|
|
# RUN curl -sSL https://storage.googleapis.com/golang/go${GOFMT_VERSION}.$(go env GOOS)-$(go env GOARCH).tar.gz | tar -C /go/bin -xz --strip-components=2 go/bin/gofmt
|
|
|
|
|
|
+#ENV GO_TOOLS_COMMIT 823804e1ae08dbb14eb807afc7db9993bc9e3cc3
|
|
|
# TODO update this sha when we upgrade to Go 1.5+
|
|
|
ENV GO_TOOLS_COMMIT 069d2f3bcb68257b627205f0486d6cc69a231ff9
|
|
|
# Grab Go's cover tool for dead-simple code coverage testing
|
|
@@ -94,6 +103,8 @@ RUN git clone https://github.com/golang/tools.git /go/src/golang.org/x/tools \
|
|
|
&& go install -v golang.org/x/tools/cmd/cover \
|
|
|
&& go install -v golang.org/x/tools/cmd/vet
|
|
|
# Grab Go's lint tool
|
|
|
+#ENV GO_LINT_COMMIT 32a87160691b3c96046c0c678fe57c5bef761456
|
|
|
+# TODO update this sha when we upgrade to Go 1.5+
|
|
|
ENV GO_LINT_COMMIT f42f5c1c440621302702cb0741e9d2ca547ae80f
|
|
|
RUN git clone https://github.com/golang/lint.git /go/src/github.com/golang/lint \
|
|
|
&& (cd /go/src/github.com/golang/lint && git checkout -q $GO_LINT_COMMIT) \
|
|
@@ -102,17 +113,17 @@ RUN git clone https://github.com/golang/lint.git /go/src/github.com/golang/lint
|
|
|
# install seccomp
|
|
|
# this can be changed to the ubuntu package libseccomp-dev if dockerinit is removed,
|
|
|
# we need libseccomp.a (which the package does not provide) for dockerinit
|
|
|
-ENV SECCOMP_VERSION v2.2.3
|
|
|
+ENV SECCOMP_VERSION 2.2.3
|
|
|
RUN set -x \
|
|
|
- && export SECCOMP_PATH=$(mktemp -d) \
|
|
|
- && git clone https://github.com/seccomp/libseccomp.git "$SECCOMP_PATH" \
|
|
|
+ && export SECCOMP_PATH="$(mktemp -d)" \
|
|
|
+ && curl -fsSL "https://github.com/seccomp/libseccomp/releases/download/v${SECCOMP_VERSION}/libseccomp-${SECCOMP_VERSION}.tar.gz" \
|
|
|
+ | tar -xzC "$SECCOMP_PATH" --strip-components=1 \
|
|
|
&& ( \
|
|
|
cd "$SECCOMP_PATH" \
|
|
|
- && git checkout "$SECCOMP_VERSION" \
|
|
|
- && ./autogen.sh \
|
|
|
- && ./configure --prefix=/usr \
|
|
|
+ && ./configure --prefix=/usr/local \
|
|
|
&& make \
|
|
|
&& make install \
|
|
|
+ && ldconfig \
|
|
|
) \
|
|
|
&& rm -rf "$SECCOMP_PATH"
|
|
|
|
|
@@ -127,29 +138,21 @@ RUN set -x \
|
|
|
&& rm -rf "$GOPATH"
|
|
|
|
|
|
# Install notary server
|
|
|
-# commented Notary temporary as we are waiting for an update of jose2go: https://github.com/docker/notary/issues/239
|
|
|
-#
|
|
|
-# ENV NOTARY_COMMIT 8e8122eb5528f621afcd4e2854c47302f17392f7
|
|
|
-# RUN set -x \
|
|
|
-# && export GOPATH="$(mktemp -d)" \
|
|
|
-# && git clone https://github.com/docker/notary.git "$GOPATH/src/github.com/docker/notary" \
|
|
|
-# && (cd "$GOPATH/src/github.com/docker/notary" && git checkout -q "$NOTARY_COMMIT") \
|
|
|
-# && GOPATH="$GOPATH/src/github.com/docker/notary/Godeps/_workspace:$GOPATH" \
|
|
|
-# go build -o /usr/local/bin/notary-server github.com/docker/notary/cmd/notary-server \
|
|
|
-# && rm -rf "$GOPATH"
|
|
|
+ENV NOTARY_COMMIT f211b1826dde5fc8c117ccff9bb04ae458a8e3d0
|
|
|
+RUN set -x \
|
|
|
+ && export GOPATH="$(mktemp -d)" \
|
|
|
+ && git clone https://github.com/docker/notary.git "$GOPATH/src/github.com/docker/notary" \
|
|
|
+ && (cd "$GOPATH/src/github.com/docker/notary" && git checkout -q "$NOTARY_COMMIT") \
|
|
|
+ && GOPATH="$GOPATH/src/github.com/docker/notary/Godeps/_workspace:$GOPATH" \
|
|
|
+ go build -o /usr/local/bin/notary-server github.com/docker/notary/cmd/notary-server \
|
|
|
+ && rm -rf "$GOPATH"
|
|
|
|
|
|
# Get the "docker-py" source so we can run their integration tests
|
|
|
-ENV DOCKER_PY_COMMIT 139850f3f3b17357bab5ba3edfb745fb14043764
|
|
|
+ENV DOCKER_PY_COMMIT 57512760c83fbe41302891aa51e34a86f4db74de
|
|
|
RUN git clone https://github.com/docker/docker-py.git /docker-py \
|
|
|
&& cd /docker-py \
|
|
|
- && git checkout -q $DOCKER_PY_COMMIT
|
|
|
-
|
|
|
-# Setup s3cmd config
|
|
|
-RUN { \
|
|
|
- echo '[default]'; \
|
|
|
- echo 'access_key=$AWS_ACCESS_KEY'; \
|
|
|
- echo 'secret_key=$AWS_SECRET_KEY'; \
|
|
|
- } > ~/.s3cfg
|
|
|
+ && git checkout -q $DOCKER_PY_COMMIT \
|
|
|
+ && pip install -r test-requirements.txt
|
|
|
|
|
|
# Set user.email so crosbymichael's in-container merge commits go smoothly
|
|
|
RUN git config --global user.email 'docker-dummy@example.com'
|
|
@@ -171,16 +174,16 @@ RUN ln -sv $PWD/contrib/completion/bash/docker /etc/bash_completion.d/docker
|
|
|
# Get useful and necessary Hub images so we can "docker load" locally instead of pulling
|
|
|
COPY contrib/download-frozen-image-v2.sh /go/src/github.com/docker/docker/contrib/
|
|
|
RUN ./contrib/download-frozen-image-v2.sh /docker-frozen-images \
|
|
|
- hypriot/armhf-busybox:latest@sha256:b0fc94dac9793ce3c35607b15012b4c7deca300963a7cc38ab440189ec81e2e7 \
|
|
|
- hypriot/armhf-hello-world:latest@sha256:b618ec0cc3acf683e8d77ad6c5ec81546cddde2036eda9a78f628effdeca74cd \
|
|
|
- hypriot/armhf-unshare:latest@sha256:8fede091760d2fb8b2d14cedffdd681c4575b02b1abeeb18dd79b754c62327db
|
|
|
+ armhf/busybox:latest@sha256:d98a7343ac750ffe387e3d514f8521ba69846c216778919b01414b8617cfb3d4 \
|
|
|
+ armhf/debian:jessie@sha256:094687129906d2a43cb4e5946ea379b5619c9ca8e4e27b3ba28b40f237a4150c \
|
|
|
+ armhf/hello-world:latest@sha256:161dcecea0225975b2ad5f768058212c1e0d39e8211098666ffa1ac74cfb7791
|
|
|
# see also "hack/make/.ensure-frozen-images" (which needs to be updated any time this list is)
|
|
|
|
|
|
# Download man page generator
|
|
|
RUN set -x \
|
|
|
&& export GOPATH="$(mktemp -d)" \
|
|
|
- && git clone -b v1.0.4 https://github.com/cpuguy83/go-md2man.git "$GOPATH/src/github.com/cpuguy83/go-md2man" \
|
|
|
- && git clone -b v1.4 https://github.com/russross/blackfriday.git "$GOPATH/src/github.com/russross/blackfriday" \
|
|
|
+ && git clone --depth 1 -b v1.0.4 https://github.com/cpuguy83/go-md2man.git "$GOPATH/src/github.com/cpuguy83/go-md2man" \
|
|
|
+ && git clone --depth 1 -b v1.4 https://github.com/russross/blackfriday.git "$GOPATH/src/github.com/russross/blackfriday" \
|
|
|
&& go get -v -d github.com/cpuguy83/go-md2man \
|
|
|
&& go build -v -o /usr/local/bin/go-md2man github.com/cpuguy83/go-md2man \
|
|
|
&& rm -rf "$GOPATH"
|
|
@@ -195,12 +198,12 @@ RUN set -x \
|
|
|
&& rm -rf "$GOPATH"
|
|
|
|
|
|
# Build/install the tool for embedding resources in Windows binaries
|
|
|
-ENV RSRC_COMMIT e48dbf1b7fc464a9e85fcec450dddf80816b76e0
|
|
|
+ENV RSRC_VERSION v2
|
|
|
RUN set -x \
|
|
|
- && git clone https://github.com/akavel/rsrc.git /go/src/github.com/akavel/rsrc \
|
|
|
- && cd /go/src/github.com/akavel/rsrc \
|
|
|
- && git checkout -q $RSRC_COMMIT \
|
|
|
- && go install -v
|
|
|
+ && export GOPATH="$(mktemp -d)" \
|
|
|
+ && git clone --depth 1 -b "$RSRC_VERSION" https://github.com/akavel/rsrc.git "$GOPATH/src/github.com/akavel/rsrc" \
|
|
|
+ && go build -v -o /usr/local/bin/rsrc github.com/akavel/rsrc \
|
|
|
+ && rm -rf "$GOPATH"
|
|
|
|
|
|
# Wrap all commands in the "docker-in-docker" script to allow nested containers
|
|
|
ENTRYPOINT ["hack/dind"]
|