我正在尝试将Azure函数部署到Linux环境。函数需要使用混合连接来连接到端口80上的本地API。
部署后,我收到以下错误“Azure Functions Runtime is unreachable”。以下是Docker日志的输出:
2023-03-22T11:44:50.580612973Z Unhandled exception on 03/22/2023 11:44:50: System.AggregateException: One or more errors occurred. (Failed to bind to address http://[::]:80: address already in use.)
2023-03-22T11:44:50.580768273Z ---> System.IO.IOException: Failed to bind to address http://[::]:80: address already in use.
2023-03-22T11:44:50.580781573Z ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use
2023-03-22T11:44:50.580785873Z ---> System.Net.Sockets.SocketException (98): Address already in use
2023-03-22T11:44:50.580883973Z at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
2023-03-22T11:44:50.580895373Z at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
2023-03-22T11:44:50.580899573Z at System.Net.Sockets.Socket.Bind(EndPoint localEP)
将WEBSITES_PORT
设置为另一个端口并不能解决此问题。
1条答案
按热度按时间qv7cva1a1#
我偶然发现了一篇this的文章,它帮助我解决了这个问题。在将
PORT
设置为值8080
后,容器可以正常启动。PORT用于Linux“祝福”镜像上的应用服务。
tldr:在App Service Linux上,使用Blessed Images - PORT直接影响docker run命令的容器端口。就像WEBSITES_PORT部分所解释的那样。但是,大多数时候,您可能不需要更改它。
如果出于某种原因需要更改默认容器端口(您的应用程序将侦听该端口),则可以使用PORT变量。
WEBSITES_PORT在这里没有作用。将其添加为应用程序设置不会更改端口-如果您需要更改正在运行的默认端口,则必须使用PORT应用程序设置。
以下是祝福图像堆栈的默认端口(可能会更改):