diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fb943fb --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +**/.dockerignore +**/Dockerfile +.git +Makefile +*.md +LICENSE \ No newline at end of file diff --git a/Makefile b/Makefile index 34121ba..735cdaf 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ none: @echo "This makefile is just a shortcut for building docker containers." pixiecore: - sudo docker build --rm -t danderson/pixiecore -f dockerfiles/pixiecore/Dockerfile . + sudo docker build --tag danderson/pixiecore --file dockerfiles/pixiecore/Dockerfile . pixiecore-git: - sudo docker build --rm -t danderson/pixiecore dockerfiles/pixiecore + sudo docker build --tag danderson/pixiecore dockerfiles/pixiecore diff --git a/dockerfiles/pixiecore/.dockerignore b/dockerfiles/pixiecore/.dockerignore new file mode 100644 index 0000000..583e34f --- /dev/null +++ b/dockerfiles/pixiecore/.dockerignore @@ -0,0 +1,4 @@ +.dockerignore +# TODO: don't uncomment the next line until quay.io fixes how they handle +# .dockerignore that include Dockerfile (already notified them) +#Dockerfile diff --git a/dockerfiles/pixiecore/Dockerfile b/dockerfiles/pixiecore/Dockerfile index a6822c6..afd3999 100644 --- a/dockerfiles/pixiecore/Dockerfile +++ b/dockerfiles/pixiecore/Dockerfile @@ -1,7 +1,50 @@ -FROM alpine:edge +FROM alpine:3.5 + MAINTAINER David Anderson -COPY . /tmp/stuff -RUN cd /tmp/stuff; [ -f build.sh ] && ./build.sh || ./dockerfiles/pixiecore/build.sh +ENV PIXIECORE_SANDBOX /tmp/sandbox +ENV PIXIECORE_CONTEXT "$PIXIECORE_SANDBOX"/context -ENTRYPOINT ["/pixiecore"] +COPY . "$PIXIECORE_CONTEXT" + +RUN set -x; \ + set -e; \ + \ + apk upgrade --update-cache; \ + apk add ca-certificates; \ + apk add --virtual .build-deps \ + git \ + go \ + glide \ + musl-dev; \ + \ + # Pixiecore assets \ + NAMESPACE=go.universe.tf; \ + REPO=netboot; \ + PKG=cmd/pixiecore; \ + \ + export GOPATH="$PIXIECORE_SANDBOX"/go; \ + export GLIDE_HOME="$PIXIECORE_SANDBOX"; \ + \ + NAMESPACE_PATH="$GOPATH/src/$NAMESPACE"; \ + REPO_PATH="$NAMESPACE_PATH/$REPO"; \ + PKG_PATH="$REPO_PATH/$PKG"; \ + \ + if [ -d "$PIXIECORE_CONTEXT"/"$PKG" ]; then \ + echo "Building from local dev copy"; \ + mkdir -p "$NAMESPACE_PATH"; \ + mv -v "$PIXIECORE_CONTEXT" "$REPO_PATH"; \ + else \ + echo "Building from upstream git repo"; \ + fi; \ + \ + go get -v -d "$NAMESPACE/$REPO/$PKG"; \ + cd "$REPO_PATH"; \ + glide install; \ + go test $(glide nv); \ + GOBIN=/usr/local/bin go install -ldflags -s ./"$PKG"; \ + \ + apk del --purge .build-deps; \ + rm -rf "$PIXIECORE_SANDBOX" /var/cache/apk/*; + +ENTRYPOINT ["/usr/local/bin/pixiecore"] diff --git a/dockerfiles/pixiecore/build.sh b/dockerfiles/pixiecore/build.sh deleted file mode 100755 index c61fbd8..0000000 --- a/dockerfiles/pixiecore/build.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -set -x -set -e - -mkdir -p /tmp/go/src/go.universe.tf -if [ -d /tmp/stuff/.git ]; then - echo "Building from local dev copy" - mkdir -p /tmp/go/src/go.universe.tf - cp -R /tmp/stuff /tmp/go/src/go.universe.tf/netboot -else - echo "Building from git checkout" -fi - -export GOPATH=/tmp/go -echo "http://dl-4.alpinelinux.org/alpine/edge/community" >>/etc/apk/repositories -apk -U add ca-certificates git go gcc musl-dev -apk upgrade -go get -v github.com/Masterminds/glide -go get -v -d go.universe.tf/netboot/cmd/pixiecore -cd /tmp/go/src/go.universe.tf/netboot -/tmp/go/bin/glide install -go test $(/tmp/go/bin/glide nv) -cd cmd/pixiecore -go build . -cp ./pixiecore /pixiecore -cd / -apk del git go gcc musl-dev -rm -rf /tmp/go /tmp/stuff /root/.glide /usr/lib/go /var/cache/apk/*