Skip to content

Commit 0990534

Browse files
committed
improve docker build
Signed-off-by: Markus Blaschke <mblaschke82@gmail.com>
1 parent 9568cb6 commit 0990534

File tree

2 files changed

+46
-20
lines changed

2 files changed

+46
-20
lines changed

Dockerfile

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,38 @@
1-
FROM golang:1.17 as build
1+
#############################################
2+
# Build
3+
#############################################
4+
FROM --platform=$BUILDPLATFORM golang:1.18-alpine as build
5+
6+
RUN apk upgrade --no-cache --force
7+
RUN apk add --update build-base make git
28

39
WORKDIR /go/src/github.com/webdevops/azure-debug-info
410

5-
# Get deps (cached)
6-
COPY ./go.mod /go/src/github.com/webdevops/azure-debug-info
7-
COPY ./go.sum /go/src/github.com/webdevops/azure-debug-info
8-
COPY ./Makefile /go/src/github.com/webdevops/azure-debug-info
9-
RUN make dependencies
11+
# Dependencies
12+
COPY go.mod go.sum .
13+
RUN go mod download
1014

1115
# Compile
12-
COPY ./ /go/src/github.com/webdevops/azure-debug-info
16+
COPY . .
1317
RUN make test
14-
RUN make lint
15-
RUN make build
16-
RUN ./azure-debug-info --help
18+
ARG TARGETOS TARGETARCH
19+
RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} make build
20+
21+
#############################################
22+
# Test
23+
#############################################
24+
FROM gcr.io/distroless/static as test
25+
USER 0:0
26+
WORKDIR /app
27+
COPY --from=build /go/src/github.com/webdevops/azure-debug-info/azure-debug-info .
28+
RUN ["./azure-debug-info", "--help"]
1729

1830
#############################################
19-
# FINAL IMAGE
31+
# Final
2032
#############################################
2133
FROM gcr.io/distroless/static
2234
ENV LOG_JSON=1
23-
COPY --from=build /go/src/github.com/webdevops/azure-debug-info/azure-debug-info /
35+
WORKDIR /
36+
COPY --from=test /app .
2437
USER 1000:1000
2538
ENTRYPOINT ["/azure-debug-info"]

Makefile

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
PROJECT_NAME := azure-debug-info
1+
PROJECT_NAME := $(shell basename $(CURDIR))
22
GIT_TAG := $(shell git describe --dirty --tags --always)
33
GIT_COMMIT := $(shell git rev-parse --short HEAD)
4-
LDFLAGS := -X "main.gitTag=$(GIT_TAG)" -X "main.gitCommit=$(GIT_COMMIT)" -extldflags "-static"
4+
LDFLAGS := -X "main.gitTag=$(GIT_TAG)" -X "main.gitCommit=$(GIT_COMMIT)" -extldflags "-static" -s -w
55

66
FIRST_GOPATH := $(firstword $(subst :, ,$(shell go env GOPATH)))
77
GOLANGCI_LINT_BIN := $(FIRST_GOPATH)/bin/golangci-lint
8+
GOSEC_BIN := $(FIRST_GOPATH)/bin/gosec
89

910
.PHONY: all
1011
all: build
@@ -15,7 +16,7 @@ clean:
1516

1617
.PHONY: build
1718
build:
18-
CGO_ENABLED=0 go build -a -ldflags '$(LDFLAGS)' -o $(PROJECT_NAME) .
19+
GOOS=${GOOS} GOARCH=${GOARCH} CGO_ENABLED=0 go build -a -ldflags '$(LDFLAGS)' -o $(PROJECT_NAME) .
1920

2021
.PHONY: vendor
2122
vendor:
@@ -28,18 +29,30 @@ image: build
2829
docker build -t $(PROJECT_NAME):$(GIT_TAG) .
2930

3031
build-push-development:
31-
docker build -t webdevops/$(PROJECT_NAME):development . && docker push webdevops/$(PROJECT_NAME):development
32+
docker buildx create --use
33+
docker buildx build -t webdevops/$(PROJECT_NAME):development --platform linux/amd64,linux/arm,linux/arm64 --push .
3234

3335
.PHONY: test
3436
test:
3537
go test ./...
3638

39+
.PHONY: dependencies
40+
dependencies:
41+
go mod vendor
42+
43+
.PHONY: check-release
44+
check-release: vendor lint gosec test
45+
3746
.PHONY: lint
3847
lint: $(GOLANGCI_LINT_BIN)
39-
$(GOLANGCI_LINT_BIN) run -E exportloopref,gofmt --timeout=10m
48+
$(GOLANGCI_LINT_BIN) run -E exportloopref,gofmt --timeout=30m
4049

41-
.PHONY: dependencies
42-
dependencies: $(GOLANGCI_LINT_BIN)
50+
.PHONY: gosec
51+
gosec: $(GOSEC_BIN)
52+
$(GOSEC_BIN) ./...
4353

4454
$(GOLANGCI_LINT_BIN):
45-
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(FIRST_GOPATH)/bin v1.32.2
55+
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(FIRST_GOPATH)/bin
56+
57+
$(GOSEC_BIN):
58+
curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $(FIRST_GOPATH)/bin

0 commit comments

Comments
 (0)