docker - 对 Docker 容器中的逻辑应用的 HTTP 调用
问题描述
我已经在 Azure Tips & Tricks # 311中开始使用容器中的逻辑应用程序,它工作正常。我还咨询了Vinnie James,这是类似的
逻辑应用程序在收到 HTTP 请求后运行,该请求 - 在 VS Code 中 - 是本地主机,可从浏览器轻松使用
但是当我进入下一步,构建一个镜像并在 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
问题和运行命令的内容添加到问题中,否则它们很难阅读。
考虑到您有以下 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
如您所见,我必须访问51883
localhost 中的端口才能访问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
现在我可以访问5000
容器的端口,指的5000
是localhost
.
推荐阅读
- unity3d - Unity 3d对象保持问题我该如何解决?
- macos - 总是-bash:gomobile:找不到命令
- javascript - 没有抛出错误,但我仍然无法使用包含 RGB 字符串的变量分配 backgroundColor
- sed - 如何从路由字符串中查找模式并在 bash shell 中编辑下一行?
- javascript - 如何在 javascript 函数本身的 php 代码中使用 javascript 变量?
- swift - 链接器命令失败,退出代码为 1(使用 -v 查看调用 - swift 4
- android - 如何在 Android 应用中维护月度排行榜
- python - 从 GPU 的 60 分钟闪电战中训练 PyTorch 分类器时出错
- python - 在python中动态设置爬虫规则
- android - Ljava/net/URL 类中没有字段主机