# syntax=docker/dockerfile:1 FROM --platform=$BUILDPLATFORM golang:1.25-alpine AS build WORKDIR /src ARG TARGETOS ARG TARGETARCH RUN apk add --no-cache git COPY go.mod go.sum ./ RUN go mod download COPY . . # views/pages_templ.go ist bereits generiert und im Repo eingecheckt, # daher kein "templ generate" im Build notwendig. RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \ go build -trimpath -ldflags="-s -w" -o /out/server ./cmd/server RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \ go build -trimpath -ldflags="-s -w" -o /out/admin ./cmd/admin FROM alpine:3.20 RUN apk add --no-cache ca-certificates tzdata && \ addgroup -S ebooks && adduser -S ebooks -G ebooks WORKDIR /app COPY --from=build /out/server /app/server COPY --from=build /out/admin /app/admin COPY static ./static ENV ADDR=:8080 ENV BOOKS_DIR=/data/books ENV USERS_DB=/data/users.db RUN mkdir -p /data/books && chown -R ebooks:ebooks /data /app VOLUME ["/data"] USER ebooks EXPOSE 8080 ENTRYPOINT ["/app/server"]