windows - Docker for Windows - 容器域名无法解析

标签 windows docker dns

我想使用docker-compose在本地计算机上设置开发环境。我正在尝试为我的网站分配一些预定义的域名。它必须是一个三级域,例如 app1.myapps.test,而不仅仅是 app1

我希望 Docker 使用两个属性 hostnamedomainname 自动分配这些主机名,而不是为容器分配静态 IP 并将这些 IP 添加到 hosts 手动归档。

我的 Docker 撰写文件是:

version: '3'
services:
  app1:
    build: .
    container_name: app-1
    domainname: myapps.test
    hostname: app1

尝试打开http://app1.myapps.test/并看到错误告诉我 DNS 地址无法解析。 如果我删除属性 domainname: myapps.test 那么它工作正常,我可以通过主机名 http://app1/ 访问我的网站.

将设置更改为(无域名)

hostname: app1.myapps.test

或到

domainname: myapps.test
hostname: app1.myapps.test

也没有帮助。

Docker DNS 有没有办法设置多级域以及选项 domainname 如何工作?我错过了什么吗?

最佳答案

是的,您错过了一些内容,但因为您的撰写中出现了重复的名称

version: '3'
services:
  app1:
    build: .
    container_name: app-1
    domainname: myapps.test
    hostname: app1

如果你把它改成下面

version: '3'
services:
  app1:
    build: .
    container_name: app-1

它应该仍然有效。当你说

I'm able to access my site by hostname http://app1/.

那是因为它是服务的名称。不是因为您指定了主机名:app1。所以你真正需要的是网络别名。由于您使用的是默认网络。您可以使用如下所示的内容

version: '3'
services:
  app1:
    build: .
    container_name: app-1
    hostname: app1
    networks:
      default:
        aliases:
          - app1.myapps.test

关于windows - Docker for Windows - 容器域名无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759410/

相关文章:

docker - 在 vagrant 和 docker 中调试 spring boot

docker - 如何将snakemake容器用于htslib(bgzip + tabix)

security - WWW 与非 WWW——最佳实践是什么?我需要为我的新 SSL 证书选择一个

python - 如何使用可移植的方式在 Python 中获取默认机器域名?

windows - 使用 IE9 嵌入 WebBrowser 控件时覆盖 IE 设置

php - 独立 Wamp 服务器 ssl 身份验证设置

Python:不使用注册表 API 访问 Windows 注册表配置单元

ubuntu - 运行 Sphinx 搜索服务时出错

windows - 如何使批处理文件通过新的Windows终端运行?

php - 在 DNS 区域 Bind 10 中运行 PHP