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

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

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

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

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

四、注入postgresql在asp.net core中

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

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

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

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

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

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

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

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

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

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

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