Dockerfile
1
# syntax=docker/dockerfile:1
3
ARG GO_VERSION=1.26.5
5
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS build
7
ARG TARGETOS
8
ARG TARGETARCH
9
ARG VERSION=dev
10
ARG REVISION=unknown
12
WORKDIR /src
14
COPY go.mod go.sum ./
15
RUN --mount=type=cache,target=/go/pkg/mod go mod download
17
COPY . .
19
RUN --mount=type=cache,target=/go/pkg/mod \
20
--mount=type=cache,target=/root/.cache/go-build \
21
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
22
go build -trimpath \
23
-ldflags="-s -w -X main.releaseVersion=${VERSION} -X main.sourceRevision=${REVISION}" \
24
-o /out/koment ./cmd/koment
26
FROM gcr.io/distroless/static-debian12:nonroot@sha256:f5b485ea962d9bd1186b2f6b3a061191539b905b82ec395de78cbfae51f20e35
28
ARG VERSION
29
ARG REVISION
30
LABEL org.opencontainers.image.title="koment" \
31
org.opencontainers.image.description="Out-of-band code annotations, checked against the code they describe" \
32
org.opencontainers.image.source="https://github.com/janpuc/koment" \
33
org.opencontainers.image.licenses="AGPL-3.0-or-later" \
34
org.opencontainers.image.version="${VERSION}" \
35
org.opencontainers.image.revision="${REVISION}" \
36
io.modelcontextprotocol.server.name="io.github.janpuc/koment"
38
COPY --from=build /out/koment /usr/local/bin/koment
40
WORKDIR /
41
USER nonroot:nonroot
42
EXPOSE 8080
44
ENTRYPOINT ["/usr/local/bin/koment"]
45
CMD ["serve", "--config", "/config/repositories.yaml", "--listen", "0.0.0.0:8080"]