|
2 | 2 | # SPDX-License-Identifier: Apache-2.0
|
3 | 3 |
|
4 | 4 |
|
5 |
| -FROM golang:1.22.0-alpine AS builder |
6 |
| -RUN apk update && apk add --no-cache make protobuf-dev |
7 |
| -RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest |
8 |
| -RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest |
| 5 | +FROM golang:1.22-alpine AS builder |
9 | 6 |
|
10 | 7 | WORKDIR /usr/src/app/
|
11 | 8 |
|
12 |
| -RUN apk add build-base protobuf-dev protoc |
13 |
| -COPY ./pb/ ./pb |
14 |
| - |
15 |
| -RUN protoc -I ./pb ./pb/demo.proto --go_out=./ --go-grpc_out=./ |
16 |
| - |
17 |
| -COPY ./src/productcatalogservice/ ./ |
18 |
| -RUN go build -o /go/bin/productcatalogservice/ |
19 |
| - |
20 |
| -# ----------------------------------------------------------------------------- |
| 9 | +RUN apk update \ |
| 10 | + && apk add --no-cache make protobuf-dev |
| 11 | + |
| 12 | +RUN --mount=type=cache,target=/go/pkg/mod/ \ |
| 13 | + --mount=type=bind,source=./src/productcatalogservice/go.sum,target=go.sum \ |
| 14 | + --mount=type=bind,source=./src/productcatalogservice/go.mod,target=go.mod \ |
| 15 | + --mount=type=bind,source=./src/productcatalogservice/tools.go,target=tools.go \ |
| 16 | + go mod download \ |
| 17 | + && go list -e -f '{{range .Imports}}{{.}} {{end}}' tools.go | CGO_ENABLED=0 xargs go install -mod=readonly |
| 18 | + |
| 19 | +RUN --mount=type=cache,target=/go/pkg/mod/ \ |
| 20 | + --mount=type=cache,target=/root/.cache/go-build \ |
| 21 | + --mount=type=bind,rw,source=./src/productcatalogservice,target=. \ |
| 22 | + --mount=type=bind,rw,source=./pb,target=./pb \ |
| 23 | + protoc -I ./pb ./pb/demo.proto --go_out=./ --go-grpc_out=./ \ |
| 24 | + && go build -ldflags "-s -w" -o /go/bin/productcatalogservice/ ./ |
21 | 25 |
|
22 | 26 | FROM alpine AS release
|
23 | 27 |
|
|
0 commit comments