Asp.Net Core WebAPI+PostgreSQL部署在Docker中
<p><span style="font-size: 16px"> PostgreSQL是一个功能强大的开源数据库系统。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等,也包含各种文档。我用PostgreSQL结合.Net Core WebAPI构建并部署在Docker中做了一个Demo构建:</span></p><p><span style="font-size: 16px">一、VS2017构建Asp.Net Core WebApi项目</span></p>
<p><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813111618673-2001439861.png" alt=""></p>
<p><span style="font-size: 16px">二、在NuGet包管理器中添加 Npgsql.EntityFrameworkCore.PostgreSQL</span></p>
<p><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813111710325-2126236819.png" alt=""></p>
<p><span style="font-size: 16px">三、编写DbContext类,以及实体类。也可以直接通过命令行自动生成:</span><br><span style="font-size: 16px; color: rgba(51, 102, 255, 1)">dotnet ef dbcontext scaffold "Server=localhost;port=5432;Database=Todo;Username=postgres;Password=111111" Npgsql.EntityFrameworkCore.PostgreSQL -o Models -p postgreSQL.Demo</span></p>
<p><span style="font-size: 16px; color: rgba(51, 102, 255, 1)"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813111850643-1511736651.png" alt=""></span></p>
<p><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813111916641-816474753.png" alt=""></p>
<p><span style="font-size: 16px">如果需要对实体进行约束,实现IEntityTypeConfiguration接口</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813112016652-1933391186.png" alt=""></span></p>
<p><span style="font-size: 16px">四、注入PostgreSQL在Asp.Net Core中</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813112109074-1256401786.png" alt=""></span></p>
<p><span style="font-size: 16px">五、编写业务逻辑,由于数据库中有数据,我直接写一个读取数据的API方法</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813112158141-1633040278.png" alt=""></span></p>
<p><span style="font-size: 16px">控制台运行后指定api/todo路径后,显示如下结果:</span></p>
<p><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813112252786-1291132686.png" alt=""></p>
<p><span style="font-size: 16px">六、接下来,在VS2017项目WebApi中添加Docker Compose,Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器,在VS2017中,选中项目右击-》添加-》容器业务流程协调程序支持,当然你也可以选择Docker支持,不过需要自己手动输入命令行构建镜像。</span></p>
<p><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813112340189-1147881495.png" alt=""></p>
<p><span style="font-size: 16px">接下来,会发现项目中出现了一个Docker Compose的一个项目节点:</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813112426507-2077961908.png" alt=""></span></p>
<p><span style="font-size: 16px">yml文件对Docker容器进行了项目配置,另外在WebAPI项目中多了一个Dockerfile文件,文件中描述的是构建Docker镜像的构建命令:</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813113603515-1407569807.png" alt=""></span></p>
<p><span style="font-size: 16px">七、在Docker-Compose项目的yml文件中是Docker的一些配置:</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813113701866-1844589708.png" alt=""></span></p>
<p><span style="font-size: 16px">生成Docker-Compose项目,自动进行Docker镜像构建,不需要手动输入命令行:</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813113819463-589593311.png" alt=""></span></p>
<p><span style="font-size: 16px">最后运行Docker-Compose,启动后,打开Docker可视化工具Kitematic可以看到部署的webapi站点在运行中:</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813113839936-56978940.png" alt="" width="1029" height="663"></span></p>
<p><span style="font-size: 16px">点击右边的Hostname/Ports选项,下面是Docker 的端口映射,可以修改</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813113932978-2065395951.png" alt="" width="1046" height="442"></span></p>
<p><span style="font-size: 16px">点击localhost:64629,访问路径api/todo,会看到和控制台运行一样的效果</span></p>
<p><span style="font-size: 16px"><img src="https://img2018.cnblogs.com/blog/384798/201908/384798-20190813114125192-1728635107.png" alt=""></span></p>
<p><span style="font-size: 16px">另外要注意:<span style="color: rgba(51, 102, 255, 1)">PostgreSQL不要用localhost地址,改用IP地址,具体的PostgreSQL的IP地址配置看如下链接:</span></span><br><span style="font-size: 16px">https://www.bbsmax.com/A/n2d9Xw605D/</span></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/JunXiao/p/11344989.html
頁:
[1]