前一節演示在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:對外端口,即可訪問! 沒有域名,填寫localhost location / { 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容器,重新加載配置