feat(dev): add Mailpit mail catcher to docker-compose
Some checks failed
CI / Backend Unit Tests (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Unit & Component Tests (push) Has been cancelled
CI / Unit & Component Tests (pull_request) Successful in 2m6s
CI / Backend Unit Tests (pull_request) Successful in 2m7s
CI / E2E Tests (pull_request) Has been cancelled
Some checks failed
CI / Backend Unit Tests (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Unit & Component Tests (push) Has been cancelled
CI / Unit & Component Tests (pull_request) Successful in 2m6s
CI / Backend Unit Tests (pull_request) Successful in 2m7s
CI / E2E Tests (pull_request) Has been cancelled
Adds a Mailpit container that catches all outgoing emails locally so password reset links can be tested without a real SMTP server. - Backend defaults to MAIL_HOST=mailpit / MAIL_PORT=1025 in compose - SMTP auth and STARTTLS disabled for Mailpit (no credentials needed) - Web inbox available at http://localhost:8025 - Production SMTP still works by overriding MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_SMTP_AUTH, and MAIL_STARTTLS_ENABLE in .env Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -58,6 +58,19 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- archive-net
|
- archive-net
|
||||||
|
|
||||||
|
# --- Mail catcher: Mailpit (dev only) ---
|
||||||
|
# Catches all outgoing emails and displays them in a web UI.
|
||||||
|
# Access the inbox at http://localhost:${PORT_MAILPIT_UI} after starting the stack.
|
||||||
|
mailpit:
|
||||||
|
image: axllent/mailpit:latest
|
||||||
|
container_name: archive-mailpit
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${PORT_MAILPIT_UI:-8025}:8025" # Web UI
|
||||||
|
- "${PORT_MAILPIT_SMTP:-1025}:1025" # SMTP
|
||||||
|
networks:
|
||||||
|
- archive-net
|
||||||
|
|
||||||
# --- Backend: Spring Boot ---
|
# --- Backend: Spring Boot ---
|
||||||
backend:
|
backend:
|
||||||
build:
|
build:
|
||||||
@@ -74,6 +87,8 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
minio:
|
minio:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
mailpit:
|
||||||
|
condition: service_started
|
||||||
environment:
|
environment:
|
||||||
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB}
|
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB}
|
||||||
SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
|
SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER}
|
||||||
@@ -84,11 +99,15 @@ services:
|
|||||||
S3_BUCKET_NAME: ${MINIO_DEFAULT_BUCKETS}
|
S3_BUCKET_NAME: ${MINIO_DEFAULT_BUCKETS}
|
||||||
S3_REGION: us-east-1
|
S3_REGION: us-east-1
|
||||||
APP_BASE_URL: ${APP_BASE_URL:-http://localhost:3000}
|
APP_BASE_URL: ${APP_BASE_URL:-http://localhost:3000}
|
||||||
MAIL_HOST: ${MAIL_HOST:-}
|
# Defaults to the local Mailpit catcher — override in .env for production SMTP
|
||||||
MAIL_PORT: ${MAIL_PORT:-587}
|
MAIL_HOST: ${MAIL_HOST:-mailpit}
|
||||||
|
MAIL_PORT: ${MAIL_PORT:-1025}
|
||||||
MAIL_USERNAME: ${MAIL_USERNAME:-}
|
MAIL_USERNAME: ${MAIL_USERNAME:-}
|
||||||
MAIL_PASSWORD: ${MAIL_PASSWORD:-}
|
MAIL_PASSWORD: ${MAIL_PASSWORD:-}
|
||||||
APP_MAIL_FROM: ${APP_MAIL_FROM:-noreply@familienarchiv.local}
|
APP_MAIL_FROM: ${APP_MAIL_FROM:-noreply@familienarchiv.local}
|
||||||
|
# Mailpit needs no auth or STARTTLS; production SMTP overrides these via .env
|
||||||
|
SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH: ${MAIL_SMTP_AUTH:-false}
|
||||||
|
SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE: ${MAIL_STARTTLS_ENABLE:-false}
|
||||||
ports:
|
ports:
|
||||||
- "${PORT_BACKEND}:8080"
|
- "${PORT_BACKEND}:8080"
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
Reference in New Issue
Block a user