在本地开发中,我经常接触docker-compose来获取诸如db这样的服务,这些服务的移动并不多,只是为了简化操作并使其与主机隔离。
现在是典型示例-我正在使用webpack开发基于节点的SPA,并具有mongodb的支持。在部署时,它们与Kubernetes捆绑在一起。
在本地,在开发 app 时,我肯定是出于生产力的考虑而从主机上提供该服务,但对于支持mongodb的我,我只是使用一个简单的docker-compose。因此,我只需像平常一样进行设置:
version: '3.7'
services:
mongo:
image: mongo:4.1.7-xenial
command: "mongod"
ports:
- 5000:27017
volumes:
- kb-front-db:/data/db
volumes:
kb-front-db:
但是,这次我在主机端口5000上发生了冲突,因为我已经将其用于另一个项目。我确实有很多这样的项目。
所以……我真的不想为我的所有项目想出某种端口编号方案来避免冲突,所以我正在为文档寻求一种使用dns或只是桥接docker的方法。主机的网络名称...?但是我的搜索能力使我不满意,我似乎找不到办法……?我找到了很多关于从容器到主机到达 的文档,但是由于某种原因,如果没有手动使用HOST_PORT进行公开,则不是相反的方法。
我基本上只想要一种使用某种命名方式从主机连接到CONTAINER_PORT上的Docker容器的方法,这种命名方式比端口号更容易在我的脑海中动摇?
也许我在这里遗漏了一些非常明显的东西……任何提示都值得赞赏!
答案 0 :(得分:0)
在OSX上,无法以桥接模式将流量从主机路由到Docker容器:
适用于Mac的Docker桌面无法将流量路由到容器
推荐的解决方案正是我要避免的方法:
我们当前的建议是发布端口,或从另一个容器连接。即使容器在覆盖网络而不是桥接网络上,这也是在Linux上也需要执行的操作,因为这些容器未路由。