函数运行时无法访问 Docker Azure



我们尝试使用 Azure 函数(HTTP 触发器)在 Dockerfile 中触发 Java 可执行文件 (JAR)。我们能够使用 VSCode 在本地构建、标记和运行映像。但是,当我们将其推送到 Azure 时,我们会收到函数运行时无法访问的错误。

日志显示:

"容器未响应端口 4444 或 8080 上的 HTTP ping">

我们尝试了以下方法:

  • 44448080添加了WEBSITES_PORT
  • 我们还在推送 Dockerfile 时一次公开了一个端口。
  • 我们将WEBSITES_CONTAINER_START_TIME_LIMIT的值更改为1800和其他值,但没有成功。

部署中心日志显示一条消息,指出已成功拉取 docker 映像:

INFO - Pull Image successful, Time taken: 0 Minutes and 0 Seconds 
INFO - Starting container for site 
INFO - docker run -d -p 8080:8080 --name xxxx -e DOCKER_CUSTOM_IMAGE_NAME=notreal.azurecr.io/xxxx -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=8080 -e WEBSITE_SITE_NAME=xxxx -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=xxxx.azurewebsites.net -e WEBSITE_INSTANCE_ID=abcdef abcdef.azurecr.io/xxxx 
INFO - Logging is not enabled for this container. Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here. 
INFO - Initiating warmup request to container xxxx for site xxxx 
INFO - Waiting for response to warmup request for container xxxx. Elapsed time = 15.5217224 sec 
INFO - Waiting for response to warmup request for container xxxx. Elapsed time = 107.7627672 sec 
ERROR - Container xxxx for site xxxx is not running, failing site start 
ERROR - Container xxxx didn't respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.

我们已经查看了有关Stack Overflow的大量示例,但尚未能够解决此问题。

容器的 Web/函数应用程序只允许你expose一个端口到外部世界。您的容器仅侦听单个端口上的 HTTP 请求。您的某些应用需要多个端口。例如,你可能有一个端口用于对应用的请求,另一个端口用于仪表板或管理门户。

你已在应用设置中使用端口值配置了WEBSITES_PORT

在自定义映像中,可以使用 80 以外的端口。因此,需要使用WEBSITES_PORT应用设置将 Azure 配置为自定义容器可以使用的端口。

如果您的应用程序使用不同的端口- 请使用 Dockerfile 中的EXPOSE指令。它将公开相应的端口,例如:(8080),并使用 Azure 上的WEBSITES_PORT应用设置作为相同的端口值 8080 来公开该端口。

在Dockerfile 中添加 EXPOSE 指令。

EXPOSE 8080

参考这里

最新更新