65 lines
2.2 KiB
Docker
65 lines
2.2 KiB
Docker
# 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"]
|