services: listmonk: image: listmonk/listmonk:latest container_name: listmonk restart: unless-stopped depends_on: listmonk-db: condition: service_healthy command: ./listmonk environment: - TZ=Europe/London volumes: - ./config.toml:/listmonk/config.toml:ro extra_hosts: - "mail.rmail.online:host-gateway" networks: - listmonk-internal - traefik-public labels: - "traefik.enable=true" - "traefik.http.routers.listmonk.rule=Host(`newsletter.jeffemmett.com`)" - "traefik.http.routers.listmonk.entrypoints=web" - "traefik.http.services.listmonk.loadbalancer.server.port=9000" cap_drop: - ALL security_opt: - no-new-privileges:true listmonk-db: image: postgres:16-alpine container_name: listmonk-db restart: unless-stopped environment: POSTGRES_USER: listmonk POSTGRES_PASSWORD: ${LISTMONK_DB_PASSWORD} POSTGRES_DB: listmonk volumes: - listmonk_pgdata:/var/lib/postgresql/data networks: - listmonk-internal healthcheck: test: ["CMD-SHELL", "pg_isready -U listmonk -d listmonk"] interval: 10s timeout: 5s retries: 5 volumes: listmonk_pgdata: networks: listmonk-internal: driver: bridge traefik-public: external: true