-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
47 lines (42 loc) · 1.48 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
FROM golang:1.14 as build
WORKDIR /build
COPY go.mod ./
COPY go.sum ./
RUN go mod download
RUN go get -u golang.org/x/lint/golint
COPY . ./
RUN go vet ./...
RUN golint -set_exit_status ./...
# Build kvetch
RUN go build -o kvetch ./cmd/kvetch
# Build kvetchctl
RUN mkdir -p \
/artifacts/linux \
/artifacts/arm \
/artifacts/windows \
/artifacts/darwin
ARG BUILD_FLAGS
RUN GOOS=linux GOARCH=amd64 go build -ldflags "$BUILD_FLAGS" -o /artifacts/linux/kvetchctl ./cmd/kvetchctl
RUN GOOS=linux GOARCH=arm go build -ldflags "$BUILD_FLAGS" -o /artifacts/arm/kvetchctl ./cmd/kvetchctl
RUN GOOS=darwin GOARCH=amd64 go build -ldflags "$BUILD_FLAGS" -o /artifacts/darwin/kvetchctl ./cmd/kvetchctl
RUN GOOS=windows GOARCH=amd64 go build -ldflags "$BUILD_FLAGS" -o /artifacts/windows/kvetchctl.exe ./cmd/kvetchctl
# Test repo
FROM build as test
CMD go test -race -coverprofile=/artifacts/coverage.txt -covermode=atomic ./...
# Package binaries for release
FROM build AS package
RUN apt-get -y update && apt-get -y install zip
WORKDIR /artifacts
RUN cd linux && tar zcf /artifacts/linux.tar.gz kvetchctl
RUN cd arm && tar zcf /artifacts/arm.tar.gz kvetchctl
RUN cd darwin && tar zcf /artifacts/darwin.tar.gz kvetchctl
RUN cd windows && zip -r /artifacts/windows.zip kvetchctl.exe
WORKDIR /artifacts
# Final configuration for running kvetch
FROM ubuntu:18.04 as final
ENV GOMAXPROCS 128
EXPOSE 7777
WORKDIR /app
COPY --from=0 /artifacts/linux/kvetchctl /app/
COPY --from=0 /build/kvetch /app/
CMD ["/app/kvetch"]