Локально выполняющиеся функции Azure недоступны из контейнера Docker - PullRequest
0 голосов
/ 29 января 2019

Локально работающее приложение Azure Functions доступно из http://localhost:7071. Приложение реагирования на стороне сервера отображается на http://localhost:7070. И приложение-приложение, и приложение реакции получают обратный прокси-сервер из простого контейнера nginx локальноhosted (http://localhost:7072). Для полноты, вот nginx conf:

http {
    server {    
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name  mywebapp-localdev;

        location /api {  
            proxy_pass http://10.0.75.1:7071;  
        }
        location / {  
            proxy_pass http://10.0.75.1:7070;  
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

Вот в чем проблема: если адрес http://10.0.75.1:7071/api/hello-world был получен напрямую из браузера, функцияведет себя как положено. Однако если функция вызывается через обратный прокси-сервер (http://localhost:7072/api/hello-world), то время ожидания истекает. Пара тестов из контейнера nginx также показывает, что порт 7071 на 10.0.75.1 недоступен.

Вопрос: как можно получить доступ к локально выполняющейся функции Azure (используя func host start) из контейнера Docker, также работающего локально?

1 Ответ

0 голосов
/ 30 января 2019

Понял:

Вместо того, чтобы использовать IP-адрес, упомянутый выше, все, что нужно, это использовать внутренний разрешающий адрес хоста ( host.docker.internal ) вместо:

{
    location / {  
        proxy_pass http://host.docker.internal:7070;  
    }
}

Я наткнулся на множество разных ответов в зависимости от версии Docker.Это исправило это.

...