.net core 3.1 程序发布到Centos7+Docker连接数据库超时
时间: 2020-04-26来源:博客园
前景提要
.net core 3.1 程序发布到Centos7+Docker连接数据库超时
0 悬赏园豆: 20 [待解决问题] 大家有没有遇到过这样的问题,怎么解决的
一个.net core 3.1 的webapi应用,里面有连接sqlserver数据库的操作
在window平台运行正常
发布到centos7直接运行也正常
发布到centos7的docker容器之后就连接超时:
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
centos版本:centos-release-7-7.1908.0.el7.centos.x86_64
Docker版本:Docker version 19.03.8, build afacb8b
以下是测试的Controller namespace WebApplication3.Controllers { [ApiController] [Route("[controller]")] public class TestController : ControllerBase { [HttpGet] public string Get() { String connsql = "server=127.0.0.1,1433;database=test;uid=sa;password=123456;"; try { using (SqlConnection conn = new SqlConnection()) { conn.ConnectionString = connsql; conn.Open(); String sql = "select * from test"; SqlDataAdapter myda = new SqlDataAdapter(sql, conn); DataTable dt = new DataTable(); myda.Fill(dt); conn.Close(); return dt.Rows[0][1].ToString(); } } catch (Exception ex) { return "错误信息:" + ex.Message; } } } }
以下是Dockerfile文件 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 COPY . . ENTRYPOINT ["dotnet", "WebApplication3.dll"] .net core 3.1 Docker 连接数据库超时 tian_z | 初学一级 | 园豆: 158
提问于:2020-04-26 18:50 显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
< > 分享
分享您的问题
所有回答(5) 0 127.0.0.1 指向的是docker实例本身。你可以替换为 192.168这也的ip jzblive | 园豆:143 (初学一级) | 2020-04-26 19:01 换为连接单独的一台sqlserver服务器也是不行 支持( 0 ) 反对( 0 ) tian_z | 园豆:158 (初学一级) | 2020-04-26 19:13 还试过了改为.netcore 2.2 就可以正常运行 不知道3.1到底是哪里出了问题 支持( 0 ) 反对( 0 ) tian_z | 园豆:158 (初学一级) | 2020-04-26 19:14 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 docker 环境下 ping 一下你数据库的IP,如果不通,建议你看一下 docker 网络配置 顽皮大叔 | 园豆:318 (菜鸟二级) | 2020-04-26 19:16 ping 过了.netcore 2.2 的容器和.netcore3.1的容器都是可以ping通数据库的地址,但是2.2的是ok的 3.1的不行 支持( 0 ) 反对( 0 ) tian_z | 园豆:158 (初学一级) | 2020-04-26 19:36 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 终端输入 ifconfig 命令,看下 docker0 里面的IP,用这个试下
tenghao510 | 园豆:155 (初学一级) | 2020-04-27 08:37 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 基础镜像换成 FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 试试,slim或者alpine等被裁减过的镜像有时候会有奇葩的问题。 blackheart | 园豆:3417 (老鸟四级) | 2020-04-27 10:09
基础镜像改了之后还是一样 支持( 0 ) 反对( 0 ) tian_z | 园豆:158 (初学一级) | 2020-04-27 10:22 @tian_z: 那就在容器里安装一个tcpdump,抓包:
tcpdump port 你的mysql服务的端口号 -w sql.pcap 支持( 0 ) 反对( 0 ) blackheart | 园豆:3417 (老鸟四级) | 2020-04-27 10:28 编辑文本 预览 上传图片
Ctrl+Enter键快速提交 0 感谢各位大佬
最后
base库改为
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic AS base
解决问题
slim版本确实是有问题 tian_z | 园豆:158 (初学一级) | 2020-04-27 14:22 编辑文本 预览 上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要 登录 以后才能回答,未注册用户请先 注册 。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行