MailCatcher
MailCatcher
https://mailcatcher.me/
https://hub.docker.com/r/schickling/mailcatcher/
Catches mail and serves it through a dream.
MailCatcher runs a super simple SMTP server which catches any message sent to it to display in a web interface. Run mailcatcher, set your favourite app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, then check out http://127.0.0.1:1080 to see the mail that's arrived so far.
Features
- Catches all mail and stores it for display.
- Shows HTML, Plain Text and Source version of messages, as applicable.
- Rewrites HTML enabling display of embedded, inline images/etc and opens links in a new window.
- Lists attachments and allows separate downloading of parts.
- Download original email to view in your native mail client(s).
- Command line options to override the default SMTP/HTTP IP and port settings.
- Mail appears instantly if your browser supports WebSockets, otherwise updates every thirty seconds.
- Runs as a daemon in the background, optionally in foreground.
- Sendmail-analogue command,
catchmail, makes using mailcatcher from PHP a lot easier.- Keyboard navigation between messages
https://github.com/hausgold/docker-mailcatcher
This Docker images provides the schickling/mailcatcher image as base with the mDNS/ZeroConf stack on top. So you can enjoy the great mailcatcher app, which is accessible by default as mailcatcher.local.
- Requirements
- Getting starting
- docker-compose usage example
- Host configs
- Configure a different mDNS hostname
- Other top level domains
- How it looks
- Further reading
- Host enabled Avahi daemon
- Host enabled mDNS NSS lookup
一些轻量docker应用镜像
https://github.com/schickling/dockerfiles
Collection of lightweight and ready-to-use docker images
- Beanstalkd - Lightweight image of the latest beanstalkd version
- Beanstalkd-Console - Admin console for Beanstalk queue server
- Hugin - Hugin & Panorama tools
- Jekyll - Lightweight jekyll working environment
- Latex - Full texlive distribution
- Mailcatcher - Extra small mailcatcher image
- mysql-backup-s3 - Backup MySQL to S3 (supports periodic backups)
- nginx-envtpl - Nginx image with support for environment variables using envtpl
- NodeJS - Minimal NodeJS + NPM image
- Octave - Lightweight octave development environment
- OpenCV - Lightweight ready-to use OpenCV image
- postgres-backup-s3 - Backup PostgresSQL to S3 (supports periodic backups)
- Redis-Commander - Redis management tool
- Rust - Lightweight nightly Rust build including Cargo and GDB
- swagger-ui - Swagger UI 2.1.2 with API_URL and API_KEY injection (45 MB)
- s3cmd - Lightweight wrapper around s3cmd
- thumbor-nginx-cors - Nginx image for thumbor with CORS support
邮件测试目的应用
https://github.com/fastapi/full-stack-fastapi-template/blob/master/docker-compose.override.yml
services:
# Local services are available on their ports, but also available on:
# http://api.localhost.tiangolo.com: backend
# http://dashboard.localhost.tiangolo.com: frontend
# etc. To enable it, update .env, set:
# DOMAIN=localhost.tiangolo.com
proxy:
image: traefik:3.0
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "80:80"
- "8090:8080"
# Duplicate the command from docker-compose.yml to add --api.insecure=true
command:
# Enable Docker in Traefik, so that it reads labels from Docker services
- --providers.docker
# Add a constraint to only use services with the label for this stack
- --providers.docker.constraints=Label(`traefik.constraint-label`, `traefik-public`)
# Do not expose all Docker services, only the ones explicitly exposed
- --providers.docker.exposedbydefault=false
# Create an entrypoint "http" listening on port 80
- --entrypoints.http.address=:80
# Create an entrypoint "https" listening on port 443
- --entrypoints.https.address=:443
# Enable the access log, with HTTP requests
- --accesslog
# Enable the Traefik log, for configurations and errors
- --log
# Enable debug logging for local development
- --log.level=DEBUG
# Enable the Dashboard and API
- --api
# Enable the Dashboard and API in insecure mode for local development
- --api.insecure=true
labels:
# Enable Traefik for this service, to make it available in the public network
- traefik.enable=true
- traefik.constraint-label=traefik-public
# Dummy https-redirect middleware that doesn't really redirect, only to
# allow running it locally
- traefik.http.middlewares.https-redirect.contenttype.autodetect=false
networks:
- traefik-public
- default
db:
restart: "no"
ports:
- "5432:5432"
adminer:
restart: "no"
ports:
- "8080:8080"
backend:
restart: "no"
ports:
- "8000:8000"
build:
context: ./backend
# command: sleep infinity # Infinite loop to keep container alive doing nothing
command:
- fastapi
- run
- --reload
- "app/main.py"
develop:
watch:
- path: ./backend
action: sync
target: /app
ignore:
- ./backend/.venv
- .venv
- path: ./backend/pyproject.toml
action: rebuild
# TODO: remove once coverage is done locally
volumes:
- ./backend/htmlcov:/app/htmlcov
environment:
SMTP_HOST: "mailcatcher"
SMTP_PORT: "1025"
SMTP_TLS: "false"
EMAILS_FROM_EMAIL: "noreply@example.com"
mailcatcher:
image: schickling/mailcatcher
ports:
- "1080:1080"
- "1025:1025"
frontend:
restart: "no"
ports:
- "5173:80"
build:
context: ./frontend
args:
- VITE_API_URL=http://localhost:8000
- NODE_ENV=development
playwright:
build:
context: ./frontend
dockerfile: Dockerfile.playwright
args:
- VITE_API_URL=http://backend:8000
- NODE_ENV=production
ipc: host
depends_on:
- backend
- mailcatcher
env_file:
- .env
environment:
- VITE_API_URL=http://backend:8000
- MAILCATCHER_HOST=http://mailcatcher:1080
# For the reports when run locally
- PLAYWRIGHT_HTML_HOST=0.0.0.0
- CI=${CI}
volumes:
- ./frontend/blob-report:/app/blob-report
- ./frontend/test-results:/app/test-results
ports:
- 9323:9323
networks:
traefik-public:
# For local dev, don't expect an external Traefik network
external: false



浙公网安备 33010602011771号