39

Asp.Net Core WebAPI+PostgreSQL部署在Docker中 - 润羲

 4 years ago
source link: https://www.cnblogs.com/JunXiao/p/11344989.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Asp.Net Core WebAPI+PostgreSQL部署在Docker中

   PostgreSQL是一个功能强大的开源数据库系统。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等,也包含各种文档。我用PostgreSQL结合.Net Core WebAPI构建并部署在Docker中做了一个Demo构建:

一、VS2017构建Asp.Net Core WebApi项目

384798-20190813111618673-2001439861.png

二、在NuGet包管理器中添加 Npgsql.EntityFrameworkCore.PostgreSQL

384798-20190813111710325-2126236819.png

三、编写DbContext类,以及实体类。也可以直接通过命令行自动生成:
dotnet ef dbcontext scaffold "Server=localhost;port=5432;Database=Todo;Username=postgres;Password=111111" Npgsql.EntityFrameworkCore.PostgreSQL -o Models -p postgreSQL.Demo

384798-20190813111850643-1511736651.png
384798-20190813111916641-816474753.png

如果需要对实体进行约束,实现IEntityTypeConfiguration接口

384798-20190813112016652-1933391186.png

四、注入PostgreSQL在Asp.Net Core中

384798-20190813112109074-1256401786.png

五、编写业务逻辑,由于数据库中有数据,我直接写一个读取数据的API方法

384798-20190813112158141-1633040278.png

控制台运行后指定api/todo路径后,显示如下结果:

384798-20190813112252786-1291132686.png

六、接下来,在VS2017项目WebApi中添加Docker Compose,Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器,在VS2017中,选中项目右击-》添加-》容器业务流程协调程序支持,当然你也可以选择Docker支持,不过需要自己手动输入命令行构建镜像。

384798-20190813112340189-1147881495.png

接下来,会发现项目中出现了一个Docker Compose的一个项目节点:

384798-20190813112426507-2077961908.png

yml文件对Docker容器进行了项目配置,另外在WebAPI项目中多了一个Dockerfile文件,文件中描述的是构建Docker镜像的构建命令:

384798-20190813113603515-1407569807.png

七、在Docker-Compose项目的yml文件中是Docker的一些配置:

384798-20190813113701866-1844589708.png

生成Docker-Compose项目,自动进行Docker镜像构建,不需要手动输入命令行:

384798-20190813113819463-589593311.png

最后运行Docker-Compose,启动后,打开Docker可视化工具Kitematic可以看到部署的webapi站点在运行中:

384798-20190813113839936-56978940.png

点击右边的Hostname/Ports选项,下面是Docker 的端口映射,可以修改

384798-20190813113932978-2065395951.png

点击localhost:64629,访问路径api/todo,会看到和控制台运行一样的效果

384798-20190813114125192-1728635107.png

另外要注意:PostgreSQL不要用localhost地址,改用IP地址,具体的PostgreSQL的IP地址配置看如下链接:
https://www.bbsmax.com/A/n2d9Xw605D/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK