我有一个包含 OpenResty 服务器的 docker 镜像。我在 docker-compose 文件中运行它,如下所示:
version: '2.1'
services:
dev.example.com:
# etc.
如果我在 OpenResty 配置中将设置resolver
为使用 Docker,那么我可以参考dev.example.com
并解析为正确的 IP:
http {
resolver 127.0.0.11;
}
但是,我不愿意命名服务dev.example.com
,而是在docker-compose中使用hostname
和:domainname
version: '2.1'
services:
proxy:
domainname: example.com
hostname: dev
# etc.
这将使我能够使用环境变量来控制主机名。问题是,当我使用这些参数而不是服务名称时,dev.example.com
无法再在 Lua 块中解析,即使在运行容器中使用 等进行的基本测试可以正确解析ping
,curl
并且像这样的简单块在任何一种情况下都可以工作:
location /test {
proxy_pass https://dev.example.com/static.html
}
如何以与 OpenResty 兼容的方式动态配置域/主机名而不更改服务名称?
答案1
不用更改domainname
和hostname
,container_name
可以指定 :
version: '2.1'
services:
proxy:
container_name: dev.example.com
# etc.
设置容器名称的效果之一是 Docker DNS 解析dev.example.com
该容器。