首页 新闻 会员 周边 捐助

.net core 程序在配置文件中的端口号在docker中配置不生效

0
悬赏园豆:10 [待解决问题]

在appsettings.json中配置urls节点,dockerfile同时暴漏了端口,为啥配置的节点端口不生效呢?配置文件中:
"urls": "http://*:8003",
打包docker后,运行的程序默认端口号是80,而8003不生效,用命令行直接启动就可以监听8003,有知道原因的吗?

李三超的主页 李三超 | 初学一级 | 园豆:154
提问于:2024-06-26 15:36
< >
分享
所有回答(3)
0

打包时指定
ENV ASPNETCORE_URLS=http://+:5000

或 appsettings.json
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
}
}

或者
CMD ["dotnet", "MyApp.dll","--urls","http://0.0.0.0:5000"]

MrNice | 园豆:3468 (老鸟四级) | 2024-06-26 17:00

主要是想知道为什么配置在docker容器里面不生效,"urls": "http://*:8003",这个配置在非docker环境下不指定端口号启动就可以应用配置

支持(0) 反对(0) 李三超 | 园豆:154 (初学一级) | 2024-06-26 17:18
0

来自AI:

如果你的.NET Core程序在Docker中的配置文件中的端口号不生效,可能是由于以下原因之一:

  1. 端口映射问题:在Dockerfile中,确保你正确地将Docker容器的端口映射到宿主机上。例如,使用 -p--publish 参数来映射端口,例如:
    docker run -p 8003:80 <image>
  2. 环境变量问题:确保在Docker容器中正确设置了环境变量。你可以在Dockerfile中使用 ENV 指令来设置环境变量,或者在使用 docker run 命令时通过 -e 参数设置环境变量,例如:
    docker run -e ASPNETCORE_URLS="http://*:8003" <image>
  3. Docker网络问题:检查Docker容器的网络设置,确保容器与外部网络进行通信。默认情况下,Docker将容器连接到虚拟网络,因此你可能需要使用 --network 参数来连接到宿主网络。
  4. 其他应用程序设置问题:如果你正在使用ASP.NET Core应用程序,还应该检查应用程序代码中是否有任何对端口的硬编码设置。确保你的应用程序代码没有覆盖appsettings.json文件中的端口设置。
    通过检查以上问题,你应该能够找到为什么配置文件中的端口号在Docker中不生效的原因。如果问题仍然存在,请提供更多详细信息,以便进行进一步的排查。
Technologyforgood | 园豆:7541 (大侠五级) | 2024-06-26 20:49
0

自己解决了

李三超 | 园豆:154 (初学一级) | 2024-07-29 09:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册