penguin/flatgit

flatgit showcase

dockerfiles/github.Dockerfile

raw ยท 1187 bytes

# syntax=docker/dockerfile:1.7

FROM golang:1.26-trixie AS build

ARG TARGETOS
ARG TARGETARCH
ARG BUILD_VER=dev

WORKDIR /src

COPY go.mod go.sum ./

RUN --mount=type=cache,target=/go/pkg/mod \
    go mod download

COPY internal ./internal
COPY cmd ./cmd

RUN --mount=type=cache,target=/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    mkdir -p /out/bin && \
    CGO_ENABLED=0 \
    GOOS=${TARGETOS:-linux} \
    GOARCH=${TARGETARCH:-amd64} \
    go build \
      -trimpath \
      -ldflags="-s -w -X main.version=${BUILD_VER}" \
      -o /out/bin/flatgit \
      ./cmd/flatgit

FROM debian:trixie-slim AS runtime

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
      ca-certificates \
      git \
      tzdata && \
    rm -rf /var/lib/apt/lists/*

RUN groupadd -r -g 10001 flatgit && \
    useradd -r -u 10001 -g 10001 -d /var/lib/flatgit -s /usr/sbin/nologin flatgit && \
    mkdir -p /var/lib/flatgit /tmp && \
    chown -R 10001:10001 /var/lib/flatgit && \
    chmod 1777 /tmp

COPY --from=build /out/bin/flatgit /usr/local/bin/flatgit

USER 10001:10001

VOLUME ["/var/lib/flatgit"]

EXPOSE 8080

ENTRYPOINT ["/usr/local/bin/flatgit"]