我自己的 docker 上部署了很多服务,其中有很多都需要发送邮件通知,也就是说要占用 465 ,或者 587 ,所以就会冲突了。 想请教下会有什么解决方案吗?
1
yidinghe 233 天前 via Android
感觉你描述有问题。一个服务需要发邮件,只需要连到邮件服务器即可,自身不需要侦听任何端口。
|
2
customsshen 233 天前
Bridge 模式改下映射端口
|
3
SoulSleep 233 天前
我的 CPU 烧了...你试过真的会冲突吗....比如你都要使用 smtp.qq.com:465
哪怕你在一台机器上部署 100 个微服务在发邮件,也不会冲突...😓😓😓😓 |
4
NoobNoob030 233 天前
没看懂,建议重新描述一下
|
5
oreader996 233 天前
这种不要占用端口,叫做连接邮件服务,只是链接比如 smtp.qq.com:465 这个端口,自身不需要占用端口
|
6
oreader996 233 天前
上面错别字有点多,我重新输入一下。这种不叫占用端口,叫做连接邮件服务,只是连接比如 smtp.qq.com:465 这个端口,自身不需要占用 465 这个端口的
|
7
cpstar 233 天前
是不是需要补充一下网络基础知识呢?比如什么叫服务端端口,什么叫客户端端口。5# 说的自身也会占用端口,只不过作为客户端端口,会随机启用一个未占用的端口来连接服务端端口。然后如果很多都是服务,那必然要分别使用不同的端口,但是“发邮件通知”完全就是要给客户端的行为。谁告诉你发邮件也要占用 465 或者 587 的。
|
8
soundlife 233 天前
- 邮件服务端才需要监听 465 587 端口,客户端连接服务端时一般使用的是高位的随机分配端口。docker 不需要配置端口映射;
- 回到 docker 的问题上,可以创建一个 docker 网络,将服务端和客户端的容器都加入到这个网络中,就不需要对外映射端口。如果非要对网络外提供服务就再套个 nginx 。这样就只需要映射 nginx 的端口就可以了 |
9
codermali OP @yidinghe
@customsshen @SoulSleep @NoobNoob030 @oreader996 @cpstar @soundlife 感谢各位的回复。 不过你们的回复我感觉跟我的描述的不是一回事,可能是我的描述不是很清楚,现在补充一下。 我使用 docker ,习惯使用 docker compose 进行部署。 如下是 gitlab 服务的端口映射,占用了 587 端口: ``` ports: - 32680:80 - 587:587 ``` 如果我其他的服务也需要发送邮件通知,那么,那么也是需要使用 587 端口的。这样,docker compose 是启动不了的。 我想问的就是这个。 |
10
NoobNoob030 232 天前
1. 其他服务换外部端口,例如 10587:587 ,宿主机的 587 端口只能给一个容器用
2. 如果只是容器和容器之间访问,可以加入同一个 network,通过 gitlab:587 访问,没必要端口映射到宿主机 |