Nginx

帶有 Docker Compose 的 OpenResty 無法在 Lua 塊中解析自己的名稱(hostname.domainname)

  • January 14, 2019

我有一個包含 OpenResty 伺服器的 docker 映像。我在這樣的 docker-compose 文件中執行它:

version: '2.1'

services:
 dev.example.com:
   # etc.

如果我resolver在 OpenResty 配置中設置為使用 Docker 之一,那麼我可以參考dev.example.com它並解析為正確的 IP:

http {
 resolver 127.0.0.11;
}

但是,我不想命名 service dev.example.com,而是在 docker-compose 中使用hostnameand :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 兼容的方式在不更改服務名稱的情況下動態配置域/主機名?

可以指定而不是更改domainnameand hostnamecontainer_name

version: '2.1'

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

設置容器名稱的效果之一是 Docker DNS 解析dev.example.com到容器。

引用自:https://serverfault.com/questions/948643