# syntax=docker/dockerfile:1.20.0 FROM docker.io/node:24.18.0-bookworm-slim@sha256:6f7b03f7c2c8e2e784dcf9295400527b9b1270fd37b7e9a7285cf83b6951452d AS ui ARG MAILPIT_VERSION=v1.30.7 ARG MAILPIT_SOURCE_SHA256=19366f9b6fb3c8dd8f9c97b2e894133c6fbac2c2fee9657975874a0deab71777 ADD --checksum=sha256:19366f9b6fb3c8dd8f9c97b2e894133c6fbac2c2fee9657975874a0deab71777 \ https://github.com/axllent/mailpit/archive/refs/tags/v1.30.7.tar.gz \ /tmp/mailpit.tar.gz WORKDIR /src RUN test "$MAILPIT_SOURCE_SHA256" = "19366f9b6fb3c8dd8f9c97b2e894133c6fbac2c2fee9657975874a0deab71777" \ && tar -xzf /tmp/mailpit.tar.gz --strip-components=1 \ && npm ci \ && npm run package FROM golang:1.26.7-alpine3.23@sha256:b17af760035fc2f338eed92d448a6c67f2d45438844fc6c60678fa5f99e44b57 AS builder ARG MAILPIT_VERSION=v1.30.7 ARG X_MOD_VERSION=v0.40.0 ENV CGO_ENABLED=0 ENV GOTOOLCHAIN=local COPY --from=ui /src /src WORKDIR /src RUN go get "golang.org/x/mod@${X_MOD_VERSION}" \ && test "$(go list -m -f '{{.Version}}' golang.org/x/mod)" = "$X_MOD_VERSION" \ && go build \ -trimpath \ -ldflags "-s -w -X github.com/axllent/mailpit/config.Version=${MAILPIT_VERSION}-wnh-go1.26.7-xmod0.40.0" \ -o /out/mailpit FROM alpine:3.24.1@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS runtime_files RUN apk add --no-cache \ ca-certificates=20260611-r0 \ tzdata=2026c-r0 FROM scratch LABEL org.opencontainers.image.title="Mailpit" \ org.opencontainers.image.description="An email and SMTP testing tool for Who Need Help development" \ org.opencontainers.image.source="https://github.com/axllent/mailpit" \ org.opencontainers.image.url="https://mailpit.axllent.org" \ org.opencontainers.image.documentation="https://mailpit.axllent.org/docs/" \ org.opencontainers.image.licenses="MIT" ENV HOME=/tmp COPY --from=runtime_files /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt COPY --from=runtime_files /usr/share/zoneinfo /usr/share/zoneinfo COPY --from=builder /out/mailpit /mailpit USER 65534:65534 EXPOSE 1025/tcp 1110/tcp 8025/tcp HEALTHCHECK --interval=15s --start-period=10s --start-interval=1s CMD ["/mailpit", "readyz"] ENTRYPOINT ["/mailpit"]