Asp.Net Core WebAPI+PostgreSQL部署在Docker中
PostgreSQL是一個(gè)功能強(qiáng)大的開源數(shù)據(jù)庫(kù)系統(tǒng)。它支持了大多數(shù)的SQL:2008標(biāo)準(zhǔn)的數(shù)據(jù)類型,包括整型、數(shù)值值、布爾型、字節(jié)型、字符型、日期型、時(shí)間間隔型和時(shí)間型,它也支持存儲(chǔ)二進(jìn)制的大對(duì)像,包括圖片、聲音和視頻。PostgreSQL對(duì)很多高級(jí)開發(fā)語(yǔ)言有原生的編程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他語(yǔ)言等,也包含各種文檔。我用PostgreSQL結(jié)合.Net Core WebAPI構(gòu)建并部署在Docker中做了一個(gè)Demo構(gòu)建:
一、VS2017構(gòu)建Asp.Net Core WebApi項(xiàng)目
二、在NuGet包管理器中添加 Npgsql.EntityFrameworkCore.PostgreSQL
三、編寫DbContext類,以及實(shí)體類。也可以直接通過命令行自動(dòng)生成:
dotnet ef dbcontext scaffold "Server=localhost;port=5432;Database=Todo;Username=postgres;Password=111111" Npgsql.EntityFrameworkCore.PostgreSQL -o Models -p postgreSQL.Demo
如果需要對(duì)實(shí)體進(jìn)行約束,實(shí)現(xiàn)IEntityTypeConfiguration接口
四、注入PostgreSQL在Asp.Net Core中
五、編寫業(yè)務(wù)邏輯,由于數(shù)據(jù)庫(kù)中有數(shù)據(jù),我直接寫一個(gè)讀取數(shù)據(jù)的API方法
控制臺(tái)運(yùn)行后指定api/todo路徑后,顯示如下結(jié)果:
六、接下來,在VS2017項(xiàng)目WebApi中添加Docker Compose,Docker Compose是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。一個(gè)使用Docker容器的應(yīng)用,通常由多個(gè)容器組成。使用Docker Compose不再需要使用shell腳本來啟動(dòng)容器,在VS2017中,選中項(xiàng)目右擊-》添加-》容器業(yè)務(wù)流程協(xié)調(diào)程序支持,當(dāng)然你也可以選擇Docker支持,不過需要自己手動(dòng)輸入命令行構(gòu)建鏡像。
接下來,會(huì)發(fā)現(xiàn)項(xiàng)目中出現(xiàn)了一個(gè)Docker Compose的一個(gè)項(xiàng)目節(jié)點(diǎn):
yml文件對(duì)Docker容器進(jìn)行了項(xiàng)目配置,另外在WebAPI項(xiàng)目中多了一個(gè)Dockerfile文件,文件中描述的是構(gòu)建Docker鏡像的構(gòu)建命令:
七、在Docker-Compose項(xiàng)目的yml文件中是Docker的一些配置:
生成Docker-Compose項(xiàng)目,自動(dòng)進(jìn)行Docker鏡像構(gòu)建,不需要手動(dòng)輸入命令行:
最后運(yùn)行Docker-Compose,啟動(dòng)后,打開Docker可視化工具Kitematic可以看到部署的webapi站點(diǎn)在運(yùn)行中:
點(diǎn)擊右邊的Hostname/Ports選項(xiàng),下面是Docker 的端口映射,可以修改
點(diǎn)擊localhost:64629,訪問路徑api/todo,會(huì)看到和控制臺(tái)運(yùn)行一樣的效果
另外要注意:PostgreSQL不要用localhost地址,改用IP地址,具體的PostgreSQL的IP地址配置看如下鏈接:
https://www.bbsmax.com/A/n2d9Xw605D/
原文鏈接:https://www.cnblogs.com/JunXiao/p/11344989.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的Asp.Net Core WebAPI+PostgreSQL部署在Docker中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core on K8S深
- 下一篇: 博客园升级有感一点建议