Commit fdede387 authored by Adam Reese's avatar Adam Reese

Merge pull request #15 from adamreese/feat/docker-build

feat(Makefile): add docker build tooling
parents a4a0c79f df78765b
.coverage/
bin/
rootfs/helm
rootfs/tiller
vendor/
_proto/*.pb.go
GO ?= go
DOCKER_REGISTRY :=
IMAGE_PREFIX ?= helm
SHORT_NAME ?= tiller
# go option
GO ?= go
GOARCH ?= $(shell go env GOARCH)
GOOS ?= $(shell go env GOOS)
PKG := $(shell glide novendor)
TAGS :=
TESTS := .
TESTFLAGS :=
LDFLAGS :=
GOFLAGS :=
BINDIR := ./bin
BINARIES := helm tiller
include versioning.mk
.PHONY: all
all: build
.PHONY: build
build: GOFLAGS += -v -a -installsuffix cgo
build:
@for i in $(BINARIES); do \
$(GO) build -o ./bin/$$i -v $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' ./cmd/$$i || exit 1; \
CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) $(GO) build -o $(BINDIR)/$$i $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' ./cmd/$$i || exit 1; \
done
.PHONY: check-docker
check-docker:
@if [ -z $$(which docker) ]; then \
echo "Missing \`docker\` client which is required for development"; \
exit 2; \
fi
.PHONY: docker-binary
docker-binary: GOOS = linux
docker-binary: GOARCH = amd64
docker-binary: BINDIR = ./rootfs
docker-binary: build
.PHONY: docker-build
docker-build: check-docker docker-binary
docker build --rm -t ${IMAGE} rootfs
docker tag -f ${IMAGE} ${MUTABLE_IMAGE}
.PHONY: test
test: TESTFLAGS += -race -v
test: test-style
......@@ -32,7 +60,7 @@ test-style:
.PHONY: clean
clean:
rm -rf ./bin
@rm -rf $(BINDIR)
.PHONY: coverage
coverage:
......
FROM alpine:3.3
COPY . /
EXPOSE 44134
CMD ["/tiller"]
# RootFS
This directory stores all files that should be copied to the rootfs of a
Docker container. The files should be stored according to the correct
directory structure of the destination container. For example:
```
rootfs/bin -> /bin
rootfs/usr/local/share -> /usr/local/share
```
## Dockerfile
A Dockerfile in the rootfs is used to build the image. Where possible,
compilation should not be done in this Dockerfile, since we are
interested in deploying the smallest possible images.
Example:
```Dockerfile
FROM alpine:3.2
COPY . /
ENTRYPOINT ["/usr/local/bin/boot"]
```
MUTABLE_VERSION ?= canary
VERSION ?= git-$(shell git rev-parse --short HEAD)
IMAGE := ${DOCKER_REGISTRY}${IMAGE_PREFIX}/${SHORT_NAME}:${VERSION}
MUTABLE_IMAGE := ${DOCKER_REGISTRY}${IMAGE_PREFIX}/${SHORT_NAME}:${MUTABLE_VERSION}
info:
@echo "Build tag: ${VERSION}"
@echo "Registry: ${DOCKER_REGISTRY}"
@echo "Immutable tag: ${IMAGE}"
@echo "Mutable tag: ${MUTABLE_IMAGE}"
.PHONY: docker-push
docker-push: docker-mutable-push docker-immutable-push
.PHONY: docker-immutable-push
docker-immutable-push:
docker push ${IMAGE}
.PHONY: docker-mutable-push
docker-mutable-push:
docker push ${MUTABLE_IMAGE}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment