github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/Dockerfile (about) 1 # syntax=docker/dockerfile:1 2 ARG VERSION=dev 3 4 FROM --platform=$BUILDPLATFORM golang:1.21.4-alpine3.18 AS build 5 WORKDIR /build 6 RUN apk add --no-cache build-base ca-certificates 7 COPY go.mod go.sum ./ 8 RUN --mount=type=cache,target=/go/pkg go mod download 9 COPY . ./ 10 11 FROM build as build-lakefs 12 ARG VERSION TARGETOS TARGETARCH 13 RUN --mount=type=cache,target=/root/.cache/go-build \ 14 --mount=type=cache,target=/go/pkg \ 15 GOOS=$TARGETOS GOARCH=$TARGETARCH \ 16 go build -ldflags "-X github.com/treeverse/lakefs/pkg/version.Version=${VERSION}" -o lakefs ./cmd/lakefs 17 18 FROM build as build-lakectl 19 ARG VERSION TARGETOS TARGETARCH 20 RUN --mount=type=cache,target=/root/.cache/go-build \ 21 --mount=type=cache,target=/go/pkg \ 22 GOOS=$TARGETOS GOARCH=$TARGETARCH \ 23 go build -ldflags "-X github.com/treeverse/lakefs/pkg/version.Version=${VERSION}" -o lakectl ./cmd/lakectl 24 25 FROM alpine:3.18 AS lakectl 26 WORKDIR /app 27 ENV PATH /app:$PATH 28 COPY --from=build-lakectl /build/lakectl /app/ 29 RUN apk add -U --no-cache ca-certificates 30 RUN addgroup -S lakefs && adduser -S lakefs -G lakefs 31 USER lakefs 32 WORKDIR /home/lakefs 33 ENTRYPOINT ["/app/lakectl"] 34 35 FROM lakectl AS lakefs 36 COPY ./scripts/wait-for /app/ 37 COPY --from=build-lakefs /build/lakefs /app/ 38 EXPOSE 8000/tcp 39 ENTRYPOINT ["/app/lakefs"] 40 CMD ["run"]