Docker容器中对逻辑应用程序的HTTP调用



我在Azure Tips&技巧#311,它还可以。我还咨询了Vinnie James,这是类似的

逻辑应用程序在收到HTTP请求时运行,该请求在VS代码中是localhost,可以很容易地从浏览器中使用

但当我进入下一步,构建一个映像并在Docker中运行时,我根本不清楚如何发出类似的HTTP请求;Docker在同一台W10机器上运行,使用WSL-2

Dockerfile(已更正(:

FROM mcr.microsoft.com/azure-functions/dotnet:3.0.14492-appservice
ENV AzureWebJobsStorage=DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net
ENV AzureWebJobsScriptRoot=/home/site/wwwroot 
AzureFunctionsJobHost__Logging__Console__IsEnabled=true 
FUNCTIONS_V2_COMPATIBILITY_MODE=true
ENV WEBSITE_HOSTNAME localhost
ENV WEBSITE_SITE_NAME testqueue1
ENV AZURE_FUNCTIONS_ENVIRONMENT Development
COPY . /home/site/wwwroot

尝试的Docker运行:docker run -p 80:7071 image1

响应为HTTP request sent, awaiting response... No data received

尽管(非常简单(逻辑应用程序在触发后立即发出200响应;看起来应用程序未启动。。。

首先,关于评论中的答案:请将Dockerfile和run命令的内容添加到问题中,否则很难阅读。


考虑到您有以下Dockerfile:

FROM mcr.microsoft.com/azure-functions/node:3.0
ENV AzureWebJobsStorage DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net 
ENV AzureWebJobsScriptRoot=/home/site/wwwroot 
AzureFunctionsJobHost__Logging__Console__IsEnabled=true 
FUNCTIONS_V2_COMPATIBILITY_MODE=true 
ENV WEBSITE_HOSTNAME localhost 
ENV WEBSITE_SITE_NAME test1 
ENV AZURE_FUNCTIONS_ENVIRONMENT Development 
COPY . /home/site/wwwroot 

并且您正在使用docker run -p 5000 image1运行它

我在这里看到的主要内容是,您只指示containerPort,而不指示hostPort,所以您在主机中暴露了一个随机端口。

如果您执行docker ps,您将能够看到您正在转发的端口。例如,假设我有我的映像busybox,并使用docker run -it --rm -p 5000 busybox运行它。

❯ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS                     NAMES
05927642abfc   busybox   "sh"      6 seconds ago   Up 5 seconds   0.0.0.0:51883->5000/tcp   elated_gauss

正如您所看到的,我必须访问localhost中的端口51883才能访问容器中的端口5000

另一方面,如果我用docker run -it --rm -p 5000:5000 busybox运行我的容器

❯ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED        STATUS        PORTS                    NAMES
c0aab9646d1a   busybox   "sh"      1 second ago   Up 1 second   0.0.0.0:5000->5000/tcp   busy_roentgen

现在我可以访问引用localhost上的端口5000的容器的端口5000

相关内容

  • 没有找到相关文章

最新更新