欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-09 21:55:39
PostgreSQL是一个功能强大的开源数据库系统。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、... ......

   postgresql是一个功能强大的开源数据库系统。它支持了大多数的sql:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。postgresql对很多高级开发语言有原生的编程接口,如c/c++、java、.net、perl、python、ruby、tcl 和odbc以及其他语言等,也包含各种文档。我用postgresql结合.net core webapi构建并部署在docker中做了一个demo构建:

一、vs2017构建asp.net core webapi项目

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

二、在nuget包管理器中添加 npgsql.entityframeworkcore.postgresql

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

三、编写dbcontext类,以及实体类。也可以直接通过命令行自动生成:
dotnet ef dbcontext scaffold "server=localhost;port=5432;database=todo;username=postgres;password=111111" npgsql.entityframeworkcore.postgresql -o models -p postgresql.demo

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

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

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

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

四、注入postgresql在asp.net core中

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

点击右边的hostname/ports选项,下面是docker 的端口映射,可以修改

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

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

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

另外要注意:postgresql不要用localhost地址,改用ip地址,具体的postgresql的ip地址配置看如下链接:
https://www.bbsmax.com/a/n2d9xw605d/