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"]