У меня есть образ докера, содержащий сервер 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
в контейнер.