kb/docker/Dockerfile
2025-12-17 09:00:24 -05:00

29 lines
553 B
Docker

# build stage
FROM golang:1.25-alpine AS build
WORKDIR /src
# Download Go modules
COPY go.mod go.sum ./
RUN go mod download
# this could be simplified a lot by being stricter on what we copy.
COPY . .
ENV GOCACHE=/root/.cache/go-build
RUN --mount=type=cache,target="/root/.cache/go-build" CGO_ENABLED=0 GOOS=linux go build -o kb .
# copy only binary and static files to slim image size
FROM alpine
WORKDIR /app
COPY --from=build /src/kb .
COPY --from=build /src/web ./web
# application binds to 80 by default
EXPOSE 80
ENTRYPOINT ["/app/kb"]