diff --git a/Dockerfile b/Dockerfile index a7bfa8d..67210fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,30 @@ -FROM golang:alpine +# Build +FROM golang:alpine AS build -EXPOSE 8000/tcp +ARG TAG +ARG BUILD -ENTRYPOINT ["shorturl"] +ENV APP shorturl +ENV REPO prologic/$APP -RUN \ - apk add --update git && \ +RUN apk add --update git make build-base && \ rm -rf /var/cache/apk/* -RUN mkdir -p /go/src/shorturl -WORKDIR /go/src/shorturl +WORKDIR /go/src/github.com/$REPO +COPY . /go/src/github.com/$REPO +RUN make TAG=$TAG BUILD=$BUILD build -COPY . /go/src/shorturl +# Runtime +FROM scratch -RUN go get -v -d -RUN go get github.com/GeertJohan/go.rice/rice -RUN rice embed-go -RUN go install -v +ENV APP shorturl +ENV REPO prologic/$APP + +LABEL shorturl.app main + +COPY --from=build /go/src/github.com/${REPO}/${APP} /${APP} + +EXPOSE 8080/tcp + +ENTRYPOINT ["/shorturl"] +CMD [] diff --git a/Makefile b/Makefile index 979abcf..f075477 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,34 @@ -.PHONY: dev build clean +.PHONY: dev build image test deps clean + +CGO_ENABLED=0 +COMMIT=`git rev-parse --short HEAD` +APP=shorturl +REPO?=prologic/$(APP) +TAG?=latest +BUILD?=-dev all: dev dev: build - ./shorturl + @./$(APP) -build: clean - go get ./... - go build . +deps: + #@go get github.com/GeertJohan/go.rice/rice + @go get ./... + #@rice embed-go + +build: clean deps + @echo " -> Building $(TAG)$(BUILD)" + @go build -tags "netgo static_build" -installsuffix netgo \ + -ldflags "-w -X github.com/$(REPO).GitCommit=$(COMMIT) -X github.com/$(REPO).Build=$(BUILD)" . + @echo "Built $$(./$(APP) -v)" + +image: + @docker build --build-arg TAG=$(TAG) --build-arg BUILD=$(BUILD) -t $(REPO):$(TAG) . + @echo "Image created: $(REPO):$(TAG)" test: - go test ./... + @go test -v -cover -race $(TEST_ARGS) clean: - rm -rf shorturl + @rm -rf $(APP) diff --git a/main.go b/main.go index c25fb15..9258fa5 100644 --- a/main.go +++ b/main.go @@ -1,5 +1,7 @@ package main +//go:generate rice embed-go + import ( "fmt" "log"