ASP.NET Core 8 Web API Linux Docker部署遇连接重置问题
ASP.NET Core 8 Docker 端口映射及日志排查方案
一、查看容器日志
- 查看已停止容器的日志:先通过
docker ps -a获取容器ID或名称,再执行docker logs <容器ID/名称>,比如docker logs test。 - 实时追踪运行中容器的日志:执行
docker logs -f <容器ID/名称>,比如docker logs -f test。 - 启动容器时直接查看日志:不要加
-d参数,直接运行docker run -p 5063:5063 --name test my-api,日志会实时输出到控制台。
二、进入容器命令行
- 进入运行中的容器:执行
docker exec -it <容器ID/名称> bash(Linux容器默认用bash,若bash不存在换sh),比如docker exec -it test bash。 - 启动容器并直接进入交互式终端:执行
docker run -it --rm my-api bash,退出终端后容器会自动销毁(适合临时排查)。
三、端口映射问题修复
问题根源
你的API在容器内实际监听的是8080端口,而非项目launchSettings.json中配置的5063——这是因为.NET 8官方Docker镜像默认将监听端口设为8080,本地调试的端口配置不会同步到Docker环境。
解决方法
方法1:启动容器时指定环境变量
运行容器时通过-e参数覆盖监听端口,让API在容器内监听5063:
docker run -p 5063:5063 --name test -e ASPNETCORE_URLS=http://+:5063 my-api
方法2:修改Dockerfile固化端口
在Dockerfile中添加环境变量配置,构建镜像后无需每次启动都指定:
# 其他Docker指令... ENV ASPNETCORE_URLS=http://+:5063 EXPOSE 5063
重新构建镜像后,用原命令启动即可:
docker run -p 5063:5063 --name test my-api
验证
启动容器后,执行docker exec test netstat -tulnp查看容器内监听端口,确认5063端口处于监听状态,此时主机访问http://localhost:5063即可正常连接。
内容的提问来源于stack exchange,提问作者pf12345678910
相关产品推荐
相关产品推荐

