【发布时间】:2018-04-09 14:02:07
【问题描述】:
我已经在 docker 容器中设置了 Nodemailer,但我无法接收要发送的电子邮件。我在 docker 之外运行了相同的代码来测试它是否有效并发送电子邮件。所以它必须与我的 docker 容器设置有关。我用于开发的 docker-compose 和 docker-file 并不花哨,只是必需品,而且我使用的是 docker-toolbox,因为我没有 Windows 10 专业版。
我发现类似Nodemailer not sending mails after deploying it on docker container 之类的问题已有一年多的历史,并且不包含示例代码或答案。另外,找到https://stackoverflow.com/a/25270794/1148107,并尝试将端口更改为465,开启和关闭TLS,但仍然无法发送邮件。
错误
抛出了EAI_AGAIN 错误,我查了一下,这是一个 DNS 查找超时问题,因此可能是网络连接错误或代理相关错误,但我不是 docker(或 devops)专家,所以我是有问题弄清楚如何解决它。谁能解释一下如何让 Nodemailer 在 Docker 容器中工作?
Error: getaddrinfo EAI_AGAIN smtp.mailtrap.io:2525
at Object._errnoException (util.js:1021:11)
at errnoException (dns.js:58:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:95:26)
code: 'ECONNECTION',
errno: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'smtp.mailtrap.io',
host: 'smtp.mailtrap.io',
port: 2525,
command: 'CONN'
Docker 编写
services:
server:
container_name: server
build:
context: .
dockerfile: .docker/node.${APP_ENV}.dockerfile
ports:
- "3000:3000"
volumes:
- ${NODE_SRC_PATH}:${NODE_CONTAINER_PATH}
working_dir: ${NODE_WORKING_DIR}
env_file:
- ./.docker/env/node.${APP_ENV}.env
depends_on:
- db
networks:
- app-network
// ... for brevity removed mysql, adminer, and network services
Docker 文件
# Pull in image
FROM node:latest
# Expose the default Express port
EXPOSE 3000
# Main entry point
ENTRYPOINT ["npm", "run", "start"]
【问题讨论】:
标签: node.js docker docker-compose nodemailer