Назад | Перейти на главную страницу

OpenResty с Docker Compose не может разрешить собственное имя (hostname.domainname) в блоке Lua

У меня есть образ докера, содержащий сервер OpenResty. Я запускаю его в файле docker-compose следующим образом:

version: '2.1'

services:
  dev.example.com:
    # etc.

Если я установлю resolver чтобы использовать Docker в конфигурации OpenResty, тогда я могу обратиться к dev.example.com и он разрешает правильный IP:

http {
  resolver 127.0.0.11;
}

Однако я бы предпочел не называть услугу dev.example.com, и вместо этого используйте hostname и domainname в docker-compose:

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?

Вместо того, чтобы менять domainname и hostname, то container_name можно указать:

version: '2.1'

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

Одним из эффектов установки имени контейнера является то, что Docker DNS разрешает dev.example.com в контейнер.