Linux Azure函数-如何更改底层容器使用的端口?

doinxwow  于 2023-03-24  发布在  Linux
关注(0)|答案(1)|浏览(107)

我正在尝试将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设置为另一个端口并不能解决此问题。

qv7cva1a

qv7cva1a1#

我偶然发现了一篇this的文章,它帮助我解决了这个问题。在将PORT设置为值8080后,容器可以正常启动。

PORT用于Linux“祝福”镜像上的应用服务。

tldr:在App Service Linux上,使用Blessed Images - PORT直接影响docker run命令的容器端口。就像WEBSITES_PORT部分所解释的那样。但是,大多数时候,您可能不需要更改它。
如果出于某种原因需要更改默认容器端口(您的应用程序将侦听该端口),则可以使用PORT变量。
WEBSITES_PORT在这里没有作用。将其添加为应用程序设置不会更改端口-如果您需要更改正在运行的默认端口,则必须使用PORT应用程序设置。
以下是祝福图像堆栈的默认端口(可能会更改):

Node: 8080
Python: 8000
Java SE / Tomcat: 80
Go (experimental): 8080
.NET: 8080
Ruby: 8080
PHP: 8080

相关问题