Adding the configuration change for multiple provider, Making the service run in foreground and adding test

This commit is contained in:
Ketan Patel committed 2025-10-30 16:58:53 -04:00
1 parent 85ab503afb
commit 4eaa4d91ea
10 files changed
+1639 -140

No files matched your search

+41 -50
View File
@@ -1,67 +1,58 @@
#Postfix relay
FROM docker.io/library/alpine:latest
FROM docker.io/library/alpine:3.19
# Variables for Labels:
ARG VENDOR="k2patel"
# Variables for Labels
ARG VENDOR="your-org"
ARG COMPONENT="postfix-relay"
ARG BUILD_DATE
ARG GIT_REPO
ARG GIT_REPO="https://github.com/your-org/docker-postfix"
ARG VCS_REF
ARG VERSION="1"
ARG VERSION="2.0"
ARG NAME="dockerized-${COMPONENT}"
ARG DESCRIPTION="dockerized environment."
ARG DOCUMENTATION="https://git.k2patel.in"
ARG AUTHOR="k2patel<k2patel@live.com>"
ARG DESCRIPTION="Postfix SMTP relay supporting multiple providers (Maileroo, Mailtrap, SendGrid)"
ARG DOCUMENTATION="https://github.com/your-org/docker-postfix"
ARG AUTHOR="Your Name <your-email@example.com>"
ARG LICENSE="MIT"
# END Variables
#########################################
# Labels
LABEL org.label-schema.build-date="${BUILD_DATE}" \
org.label-schema.name="${NAME}" \
org.label-schema.description="${DESCRIPTION}" \
org.label-schema.vcs-ref="${VCS_REF}" \
org.label-schema.vcs-url="${GIT_REPO}" \
org.label-schema.url="${GIT_REPO}" \
org.label-schema.vendor="${VENDOR}" \
org.label-schema.version="${VERSION}" \
org.label-schema.usage="${DOCUMENTATION}"
org.label-schema.name="${NAME}" \
org.label-schema.description="${DESCRIPTION}" \
org.label-schema.vcs-ref="${VCS_REF}" \
org.label-schema.vcs-url="${GIT_REPO}" \
org.label-schema.vendor="${VENDOR}" \
org.label-schema.version="${VERSION}"
LABEL org.opencontainers.image.created="${BUILD_DATE}" \
org.opencontainers.image.url="${GIT_REPO}" \
org.opencontainers.image.source="${GIT_REPO}" \
org.opencontainers.image.version="${VERSION}" \
org.opencontainers.image.revision="${VCS_REF}" \
org.opencontainers.image.vendor="${VENDOR}" \
org.opencontainers.image.title="${NAME}" \
org.opencontainers.image.description="${DESCRIPTION}" \
org.opencontainers.image.documentation="${DOCUMENTATION}" \
org.opencontainers.image.authors="${AUTHOR}" \
org.opencontainers.image.licenses="${LICENSE}"
#########################################
# Install required packages
RUN apk add --no-cache \
postfix \
postfix-pcre \
cyrus-sasl \
cyrus-sasl-login \
libsasl \
ca-certificates \
bash \
tzdata \
mailx
ENV TIMEZONE=${TIMEZONE}
ENV SMTP_SERVER=${SMTP_SERVER}
ENV SERVER_HOSTNAME=${SERVER_HOSTNAME}
ENV SMTP_PORT=${SMTP_PORT}
ENV DOMAIN=${DOMAIN}
ENV SMTP_USERNAME=${SMTP_USERNAME}
ENV SMTP_PASSWORD=${SMTP_PASSWORD}
# Create necessary directories
RUN mkdir -p /var/spool/postfix /etc/postfix/sasl
# Intall Needed Package
RUN apk add --no-cache postfix libsasl supervisor ca-certificates bash rsyslog cyrus-sasl
#Configure nodaemon mode for supervisord
RUN sed -i -e "s/^nodaemon=false/nodaemon=true/" /etc/supervisord.conf
#Change postfix to listen on all the interface
RUN sed -i -e 's/inet_interfaces = localhost/inet_interfaces = all/g' /etc/postfix/main.cf
COPY etc/ /etc/
VOLUME ["/var/log", "/var/mail", "/var/spool/postfix"]
COPY run.sh /
# Copy entrypoint script
COPY run.sh /run.sh
RUN chmod +x /run.sh
# Initialize postfix
RUN newaliases
# Expose SMTP port
EXPOSE 25
ENTRYPOINT /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
# Volumes for persistence
VOLUME ["/var/spool/postfix"]
# Health check
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=40s \
CMD postfix status || exit 1
# Run postfix in foreground
ENTRYPOINT ["/run.sh"]