Fix docker build
This commit is contained in:
		
							parent
							
								
									d20ad71071
								
							
						
					
					
						commit
						25570a0c6d
					
				
							
								
								
									
										41
									
								
								Dockerfile
								
								
								
								
							
							
						
						
									
										41
									
								
								Dockerfile
								
								
								
								
							|  | @ -1,32 +1,39 @@ | |||
| # Build the manager binary | ||||
| FROM golang:1.17 as builder | ||||
| 
 | ||||
| ARG TARGETPLATFORM | ||||
| FROM --platform=$BUILDPLATFORM golang:1.17 as builder | ||||
| 
 | ||||
| WORKDIR /workspace | ||||
| 
 | ||||
| ENV GO111MODULE=on \ | ||||
|   CGO_ENABLED=0 | ||||
| # Copy the Go Modules manifests | ||||
| COPY go.mod go.sum ./ | ||||
| 
 | ||||
| # # Copy the Go Modules manifests | ||||
| # COPY go.mod go.sum ./ | ||||
| 
 | ||||
| # # cache deps before building and copying source so that we don't need to re-download as much | ||||
| # # and so that source changes don't invalidate our downloaded layer | ||||
| # RUN --mount=type=cache,target=/go/pkg/mod go mod download | ||||
| # cache deps before building and copying source so that we don't need to re-download as much | ||||
| # and so that source changes don't invalidate our downloaded layer. | ||||
| # | ||||
| # Also, we need to do this before setting TARGETPLATFORM/TARGETOS/TARGETARCH/TARGETVARIANT | ||||
| # so that go mod cache is shared across platforms. | ||||
| RUN go mod download | ||||
| 
 | ||||
| # Copy the go source | ||||
| # COPY . . | ||||
| 
 | ||||
| ARG TARGETOS | ||||
| ARG TARGETARCH | ||||
| # Usage: | ||||
| #   docker buildx build --tag repo/img:tag -f ./Dockerfile . --platform linux/amd64,linux/arm64,linux/arm/v7 | ||||
| # | ||||
| # With the above commmand, | ||||
| # TARGETOS can be "linux", TARGETARCH can be "amd64", "arm64", and "arm", TARGETVARIANT can be "v7". | ||||
| 
 | ||||
| ARG TARGETPLATFORM TARGETOS TARGETARCH TARGETVARIANT | ||||
| 
 | ||||
| # We intentionally avoid `--mount=type=cache,mode=0777,target=/go/pkg/mod` in the `go mod download` and the `go build` runs | ||||
| # to avoid https://github.com/moby/buildkit/issues/2334 | ||||
| # We can use docker layer cache so the build is fast enogh anyway | ||||
| # We also use per-platform GOCACHE for the same reason. | ||||
| env GOCACHE /build/${TARGETPLATFORM}/root/.cache/go-build | ||||
| 
 | ||||
| # Build | ||||
| RUN --mount=target=. \ | ||||
|   --mount=type=cache,mode=0777,target=/root/.cache/go-build \ | ||||
|   --mount=type=cache,mode=0777,target=/go/pkg/mod\ | ||||
|   GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ | ||||
|   GOARM=$(echo ${TARGETPLATFORM} | cut -d / -f3 | cut -c2-) \ | ||||
|   --mount=type=cache,mode=0777,target=${GOCACHE} \ | ||||
|   GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT#v} \ | ||||
|   go build -o /out/manager main.go && go build -o /out/github-webhook-server ./cmd/githubwebhookserver | ||||
| 
 | ||||
| # Use distroless as minimal base image to package the manager binary | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue