1

在本地开发中,我经常使用 docker-compose 来获取 db 之类的服务,这些服务并没有太多移动,只是为了简单和与我的主机隔离。

现在的典型示例 - 我正在使用 webpack 开发一个基于节点的 SPA,并有一个支持 mongodb。在部署时,它们与 Kubernetes 捆绑在一起。

在本地,在开发应用程序时,由于生产力,我肯定希望从主机提供服务,但对于支持 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 的方法或只是桥码头网络名称来自主人…?但是我的搜索技巧在这里失败了,我似乎找不到方法……?我找到了很多关于从容器到主机的文档但由于某种原因,如果不使用 HOST_PORT 手动公开,则不然。

我基本上只是想要一种从主机连接到 CONTAINER_PORT 上的 docker 容器的方法,使用某种比端口号更容易在我脑海中浮现的命名?

也许我在这里遗漏了一些非常明显的东西……任何提示都非常感谢!

4

1 回答 1

0

在 OSX 上,无法以桥接模式将流量从主机路由到 Docker 容器:

Docker Desktop for Mac 无法将流量路由到容器

推荐的解决方案正是我想要避免的:

我们目前的建议是发布一个端口,或者从另一个容器连接。如果容器位于覆盖网络而不是桥接网络上,即使在 Linux 上,这也是您需要做的事情,因为这些没有路由。

https://docs.docker.com/docker-for-mac/networking/

于 2019-02-15T11:59:53.687 回答