我想在docker-compose
的本地计算机上设置开发人员环境。我试图为我的网站分配一些预定义的域名。它必须是三级域名,例如 app1.myapps.test ,而不仅仅是 app1 。
我希望Docker使用两个属性 hostname 和 domainname 自动分配这些主机名,而不是将静态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
如何工作?我错过了什么吗?
答案 0 :(得分:2)
是的,你错过了一些东西,但因为你的作品中有重复的名字
version: '3'
services:
app1:
build: .
container_name: app-1
domainname: myapps.test
hostname: app1
如果将其更改为
以下version: '3'
services:
app1:
build: .
container_name: app-1
它应该仍然有用。当你说
我可以通过主机名http://app1/访问我的网站。
那是因为它是服务的名称。不是因为您指定了hostname: app1
。所以你真正需要的是网络别名。因为您使用的是默认网络。您可以使用以下内容
version: '3'
services:
app1:
build: .
container_name: app-1
hostname: app1
networks:
default:
aliases:
- app1.myapps.test