Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7)
前一节演示在docker中安装mssql,地址:Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7)
本节演示 .Net Core项目容器和 mssql容器之间的互联互通!
1,创建一个bridge模式的网桥,将网桥连接到mssql容器
2,更改.Net Core项目 数据库连接配置文件,并生成镜像,创建一个新的容器并连接到bridge网桥
3,更改Nginx反向代理配置文件,连接到bridge网桥, 并重启Nginx
第一步:创建bridge网桥,将网桥连接到mssql容器
使用 docker network ls 查看容器默认支持网络
docker network ls
使用docker network create xxx 创建自定义网桥网络,默认就是bridge模式
docker network create test_network
把这个网桥连接Sql Server 的容器
docker network connect test_network mssqlserver
第二步:更改.NetCore项目数据库连接配置文件,并创建容器
将.net core项目中,数据库连接字符串当中 Data Source 地址改为 mssql的容器名称,例如本示例中的:mssqlserver
然后重新生成镜像文件
docker build -t myapidemo:1.0 .
接下来创建容器,注意了!、注意了!注意了!
创建容器的时候一定要指定网桥 --network=test_network 表示将该容器连接到 test_network 网桥
docker run --name=myapidemo -d -p 9020:80 --network=test_network myapidemo:1.0
从上图可以看到,容器成功运行!但是如何验证 应用项目容器 是否和 mssqlserver容器链接上了呢?
很简单,通过应用接口向数据库插入一条数据,如果插入成功,不就证明链接成功了么!
看,数据成功的插入到数据库了!
以上作为测试可以,但正式项目中还是要用Nginx来反向代理!
第三步:更改Nginx反向代理配置文件,连接到bridge网桥, 并重启Nginx
前边章节已经演示过如何配置Nginx反向代理,这里就不重复演示了!
参考:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二)
因为上边的容器都使用了bridge网桥连接,你会发现在原来的Nginx配置文件当中继续使用Ip映射已经失效了,所以需要把原来的Ip改为容器名!
这里直接修改 root/nginx/conf 路径下的 default.conf 文件
将 proxy_pass 后边的 IP地址 修改为 .net Core项目的容器名,如下:http://myapidemo:80
server {listen 80;charset utf-8;server_name www.xxxxx.com; #如果有域名,填写到这里,外网访问时用:www.xxxxx.com:对外端口,即可访问! 没有域名,填写localhostlocation / {proxy_pass http://myapidemo:80;proxy_redirect default;# root/usr/share/nginx/html;# index index.html index.htm;}}
修改完后,保存退出!并重启 Nginx容器
docker restart nginxapi
进入容器,重新加载配置,
docker exec -it nginx bash --先进入容器nginx -t && nginx -s reload --重新加载配置
然后使用Nginx代理的端口4030 添加一条数据!
数据添加成功!
使用域名访问也可以访问成功!
其他相关命令:
docker network ls--查看容器的网络信息docker network inspect NETWORK ID--查看有哪些容器链接到该网络
docker network connect 网桥名 容器名 --将容器连接到自定义网桥
nginx -t && nginx -s reload --进入nginx容器,重新加载配置
作者:找.net工作(北京)
来源链接:https://www.cnblogs.com/peterzhang123/p/13896009.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。