From c2b3dcd0cd42ae2122bec5770c41211b10172992 Mon Sep 17 00:00:00 2001 From: Sergey Smolnikov Date: Tue, 20 Sep 2022 15:08:36 +0200 Subject: [PATCH] Created goreleaser dockerfile --- .goreleaser.yml | 4 ++-- Dockerfile | 42 +++++++++++++++++++++++++++++++++++++----- Dockerfile.goreleaser | 9 +++++++++ Makefile | 4 ++-- 4 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 Dockerfile.goreleaser diff --git a/.goreleaser.yml b/.goreleaser.yml index 4c300f2..edbf3e9 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -16,8 +16,8 @@ builds: - arm64 dockers: - image_templates: - - "docker.pkg.github.com/equinor/radix-cli/rx:latest" - dockerfile: Dockerfile + - "ghcr.io/equinor/radix/rx:latest" + dockerfile: Dockerfile.goreleaser ids: - rx archives: diff --git a/Dockerfile b/Dockerfile index e861c7f..92b69f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,41 @@ -FROM alpine:3.16.2 -RUN apk update && apk add ca-certificates && apk add bash && rm -rf /var/cache/apk/* +FROM golang:1.18.5-alpine3.16 as builder -RUN addgroup -S -g 1000 radix && adduser -S -u 1000 -G radix radix +ENV GO111MODULE=on + +RUN apk update && \ + apk add bash jq alpine-sdk sed gawk git ca-certificates curl mc && \ + apk add --no-cache gcc musl-dev +RUN go install honnef.co/go/tools/cmd/staticcheck@v0.3.3 && \ + go install github.com/rakyll/statik@v0.1.7 && \ + go install github.com/golang/mock/mockgen@v1.6.0 && \ + go install github.com/go-swagger/go-swagger/cmd/swagger@v0.30.2 WORKDIR /app -COPY rx /app/rx + +# Install project dependencies +COPY go.mod go.sum ./ +RUN go mod download + +# Copy project code +COPY . /app + +# lint and unit tests +RUN staticcheck ./... && \ + go vet ./... && \ + CGO_ENABLED=0 GOOS=linux go test ./... + +RUN addgroup -S -g 1000 radix && adduser -S -u 1000 -G radix radix + +# Build +RUN swagger generate client -t ./generated-client -f https://api.radix.equinor.com/swaggerui/swagger.json -A radixapi && \ + go mod tidy && \ + CGO_ENABLED=0 GOOS=linux go build -ldflags "-s -w" -a -installsuffix cgo -o ./rootfs/rx + +## Run operator +FROM scratch +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY --from=builder /etc/passwd /etc/passwd +COPY --from=builder /app/rootfs/rx /usr/local/bin/rx USER 1000 -ENTRYPOINT ["/app/rx"] \ No newline at end of file +ENTRYPOINT ["/usr/local/bin/rx"] + diff --git a/Dockerfile.goreleaser b/Dockerfile.goreleaser new file mode 100644 index 0000000..e861c7f --- /dev/null +++ b/Dockerfile.goreleaser @@ -0,0 +1,9 @@ +FROM alpine:3.16.2 +RUN apk update && apk add ca-certificates && apk add bash && rm -rf /var/cache/apk/* + +RUN addgroup -S -g 1000 radix && adduser -S -u 1000 -G radix radix + +WORKDIR /app +COPY rx /app/rx +USER 1000 +ENTRYPOINT ["/app/rx"] \ No newline at end of file diff --git a/Makefile b/Makefile index 3cc666a..3ae5093 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,6 @@ release: .PHONY: push push: - docker build . -t ghcr.io/equinor/radix-cli/rx:latest + docker build . -t ghcr.io/equinor/radix/rx:latest docker login ghcr.io/equinor - docker push ghcr.io/equinor/radix-cli/rx:latest + docker push ghcr.io/equinor/radix/rx:latest