【问题标题】:How to auto configure local domain to point at docker container如何自动配置本地域以指向 docker 容器
【发布时间】:2018-02-21 11:21:04
【问题描述】:

我的目标是拥有一个用户/开发人员可以下拉的自包含存储库(在 Mac 上),输入 docker-compose up -d 并通过友好的 URL(如 http://myproject.dev/)拥有一个工作开发环境

我根据需要设置了我的 docker 映像,但本地域是我无法解决的问题。我知道这有点在 Docker 之外,因为这是主机系统的事情。但我真的在寻找一种方法来实现这一点,而无需用户安装本地应用程序或进行各种本地系统配置更改。

这是可以实现的,还是我找错了树?

**抱歉,我错过了一些重要信息。理想情况下,我希望避免指向 localhost,因为如果/在运行多个项目时,这会导致冲突。所以我想我们需要指向容器 IP,所以主机条目需要是动态的。确实是浑浊的 dns 水域

【问题讨论】:

  • 如果没有主机上的一些配置,这将是不可能的(至少,为/etc/resolver/dev 添加一个条目。机器的解析器是否都相同,您可以在上游 DNS?
  • 很遗憾,在启动 Docker 时是否可以运行脚本来执行本地更改?
  • 另外,如果我们同时运行多个项目,我担心会发生冲突。在那种情况下,指向 localhost 不是一种选择,我们需要一种动态指向容器 IP 的方法,对吗?
  • 如果没有一些额外的配置,你通常不能从主机直接连接到 Docker 容器。 Docker NAT 处理从主机到容器的端口转发。听起来您可能真正需要的是 Docker 上的一些管理层来处理这些服务的创建、静态 IP 地址 -> 每个服务的 NAT 映射以及 DNS 记录的创建。不幸的是,我不知道目前是否存在这样的东西(我正在考虑类似 pow.cx 或 Anvil for Docker)。

标签: macos docker dns development-environment host


【解决方案1】:

我知道你说过:

...或进行各种本地系统配置更改。

但是,如果您可以取消该要求,您需要对本地 macOS 系统进行的一项更改将是对 /etc/resolver/dev 的补充。然后,您可以在您的docker-compose.yml 上运行 DNS 服务器,该服务器会自动添加服务条目,例如 https://github.com/ruudud/devdns(特别是 https://github.com/ruudud/devdns#host-machine--containers 位)。

【讨论】:

  • 我认为你是对的,如果不添加本地主机条目,它就不会真正起作用。无论如何,您是否知道在 up 之前运行一个脚本来添加它而不为用户创建额外的步骤?
【解决方案2】:

指向一个真实世界DNS 记录,您的所有开发人员都可以查找到 127.0.0.1。所以myproject.existing.tld 会指向127.0.0.1

一个例子是vmware的could application platform

→ dig +noall +answer vcap.me
vcap.me.        3412    IN  A   127.0.0.1
→ dig +noall +answer whatever.vcap.me
vcap.me.        3412    IN  A   127.0.0.1

否则,您将通过以下方式涉足广告服务的浑水 mDNS(或LLMNR)和Zeroconf

【讨论】:

  • 确实是浑水!由于冲突,本地主机并不理想(非常抱歉我的问题在这一点上很有帮助),所以我想这让我有 dns 工作
  • 我在客户端计算机上使用公共专用网络别名地址来解决冲突问题。因此,我希望任何 10.8.0.0/16 地址都可能在本地托管,或者如果不是本地地址,则路由到托管服务的本地网络上的主机。
  • ...但这也需要本地设置才能将每个 ip 保存在接口上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 2019-11-30
  • 2019-03-20
  • 2022-11-19
  • 2020-11-11
  • 2016-04-08
相关资源
最近更新 更多