From d759d198a9c7ff11f42fa4681aad8971fb272625 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 24 Aug 2016 00:09:09 -0700 Subject: [PATCH] Refactor the dockerfile for Pixiecore. The way docker hub and quay.io work, you can't easily pass a custom context to a Dockerfile. So, effectively, if you want multiple dockerfiles per repository, you need to re-check out the whole repository by hand, without help from the environment. This sucks a little bit because it doesn't guarantee that the build happens at the trigger revision ID, but for my purposes of "just have a recent build up", it's sufficient. --- Makefile | 9 ++++++--- cmd/pixiecore/Dockerfile | 21 --------------------- dockerfiles/pixiecore/Dockerfile | 7 +++++++ dockerfiles/pixiecore/build.sh | 28 ++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 24 deletions(-) delete mode 100644 cmd/pixiecore/Dockerfile create mode 100644 dockerfiles/pixiecore/Dockerfile create mode 100755 dockerfiles/pixiecore/build.sh diff --git a/Makefile b/Makefile index af116a4..34121ba 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,11 @@ -.PHONY: none pixiecore-docker +.PHONY: none pixiecore pixiecore-git none: @echo "Use glide and the go tool for development" @echo "This makefile is just a shortcut for building docker containers." -pixiecore-docker: - sudo docker build --rm -t danderson/pixiecore -f cmd/pixiecore/Dockerfile . +pixiecore: + sudo docker build --rm -t danderson/pixiecore -f dockerfiles/pixiecore/Dockerfile . + +pixiecore-git: + sudo docker build --rm -t danderson/pixiecore dockerfiles/pixiecore diff --git a/cmd/pixiecore/Dockerfile b/cmd/pixiecore/Dockerfile deleted file mode 100644 index 0ae522c..0000000 --- a/cmd/pixiecore/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -FROM alpine:edge -MAINTAINER David Anderson - -COPY . /tmp/go/src/go.universe.tf/netboot -RUN \ - 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 &&\ - cd /tmp/go/src/go.universe.tf/netboot &&\ - ls -l &&\ - go get -v . &&\ - cd cmd/pixiecore &&\ - go build . &&\ - cp pixiecore /pixiecore &&\ - cd / &&\ - rm -rf /tmp/go &&\ - apk del git go gcc musl-dev &&\ - rm -rf /var/cache/apk/* - -ENTRYPOINT ["/pixiecore"] diff --git a/dockerfiles/pixiecore/Dockerfile b/dockerfiles/pixiecore/Dockerfile new file mode 100644 index 0000000..a6822c6 --- /dev/null +++ b/dockerfiles/pixiecore/Dockerfile @@ -0,0 +1,7 @@ +FROM alpine:edge +MAINTAINER David Anderson + +COPY . /tmp/stuff +RUN cd /tmp/stuff; [ -f build.sh ] && ./build.sh || ./dockerfiles/pixiecore/build.sh + +ENTRYPOINT ["/pixiecore"] diff --git a/dockerfiles/pixiecore/build.sh b/dockerfiles/pixiecore/build.sh new file mode 100755 index 0000000..843b09a --- /dev/null +++ b/dockerfiles/pixiecore/build.sh @@ -0,0 +1,28 @@ +#!/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 +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/*