Dockerfile55 lines · 1618 chars # Docker build file for Inbucket: https://www.inbucket.org/
### Build frontend
FROM alpine:3.22 AS frontend
RUN mkdir -p /build/ui/dist
RUN sh -lc 'echo "<!doctype html><html><body><h1>Inbucket UI placeholder</h1></body></html>"' > /build/ui/dist/index.html
### Build backend
FROM golang:1.25-alpine3.22 AS backend
RUN apk add --no-cache --virtual .build-deps g++ git make
WORKDIR /build
COPY . .
ARG VERSION=dev
ARG DATE=unknown
ENV CGO_ENABLED=0
RUN make clean deps
RUN go build -o inbucket \
-ldflags "-X main.version=${VERSION} -X main.date=${DATE}" \
-v ./cmd/inbucket
### Run in minimal image
FROM alpine:3.22
RUN apk --no-cache add tzdata wget
WORKDIR /opt/inbucket
RUN mkdir -p bin defaults ui config
COPY --from=backend /build/inbucket bin
COPY --from=frontend /build/ui/dist ui
COPY etc/docker/defaults/greeting.html /config/greeting.html
COPY etc/docker/defaults/start-inbucket.sh /
# Configuration
ENV INBUCKET_SMTP_DISCARDDOMAINS=bitbucket.local
ENV INBUCKET_SMTP_TIMEOUT=30s
ENV INBUCKET_POP3_TIMEOUT=30s
ENV INBUCKET_WEB_GREETINGFILE=/config/greeting.html
ENV INBUCKET_WEB_COOKIEAUTHKEY=secret-inbucket-session-cookie-key
ENV INBUCKET_WEB_UIDIR=ui
ENV INBUCKET_STORAGE_TYPE=file
ENV INBUCKET_STORAGE_PARAMS=path:/storage
ENV INBUCKET_STORAGE_RETENTIONPERIOD=72h
ENV INBUCKET_STORAGE_MAILBOXMSGCAP=300
# Healthcheck
HEALTHCHECK --interval=5s --timeout=5s --retries=3 CMD /bin/sh -c 'wget -q -O - http://localhost:9000/ >/dev/null || exit 1'
# Ports: SMTP, HTTP, POP3
EXPOSE 2500 9000 1100
# Persistent Volumes
VOLUME /config
VOLUME /storage
ENTRYPOINT ["/start-inbucket.sh"]
CMD ["-logjson"]