OpenResty 与 Docker Compose 无法解析 Lua 块中的自身名称(hostname.domainname)

OpenResty 与 Docker Compose 无法解析 Lua 块中的自身名称(hostname.domainname)

我有一个包含 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 块中解析,即使在运行容器中使用 等进行的基本测试可以正确解析pingcurl并且像这样的简单块在任何一种情况下都可以工作:

location /test {
  proxy_pass https://dev.example.com/static.html
}

如何以与 OpenResty 兼容的方式动态配置域/主机名而不更改服务名称?

答案1

不用更改domainnamehostnamecontainer_name可以指定 :

version: '2.1'

services:
  proxy:
    container_name: dev.example.com
    # etc.

设置容器名称的效果之一是 Docker DNS 解析dev.example.com该容器。

相关内容