Docker安装PostgreSQL与应用

准备

您需要一台Linux服务器并安装Docker,或使用windows的Docker Desktop

安装数据库

sudo apt update
sudo apt install postgresql postgresql-contri

验证安装

sudo -u postgres psql -c "SELECT version();"

创建数据库

sudo su - postgres -c "createdb [数据库名]"

添加 postgres 密码

sudo su - postgres -c "ALTER USER postgres WITH PASSWORD '[密码]';"

修改配置

cd /etc/postgresql/12/main
sudo nano postgresql.conf
# - Connection Settings - 节
listen_addresses = '*' 

开放所有访问

sudo nano pg_hba.conf
host    all  all   0.0.0.0/0  md5

重启

sudo service postgresql restart

验证

ss -nlt | grep 5432

安装客户端

pgAdmin 4

数据库使用

创建类库Postgre.Data
创建控制台 Postgre.Helloworld

Postgre.Data 使用EntityFramwork Core 6.x 面向codefirst

使用程序包管理器,Install

Install-package Microsoft.EntityFrameworkCore.Tools

添加PostgreSQL的引用

nuget 添加 Npgsql.EntityFrameworkCore.PostgreSQL

添加myContext

    public class MyContext : DbContext
    {
        public MyContext() : base()
        {
        }

        public MyContext(DbContextOptions<MyContext> options) : base(options)
        {
        }

        public DbSet<ProjectScanResult>? ProjectScanResults { get; set; }

        public DbSet<ProjectScanHistory>? ProjectScanHistorys { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //if (!optionsBuilder.IsConfigured)
            //{
            //    var connectionString = @"User ID =postgres;Password=xxxx;Server=xxx.xxx.xxx.xxx;Port=5432;Database=xxxx;Integrated Security=true;Pooling=true;";
            //    optionsBuilder.UseNpgsql(connectionString);
            //}
        }
    }

Postgre.Helloworld 代码配置(DotNet 6 Program.cs)

//Database configuration
builder.Services.AddEntityFrameworkNpgsql().AddDbContext<MyContext>(optionsAction: opt =>
    {
       opt.UseNpgsql(builder.Configuration.GetConnectionString(name: "Conection"));
    });
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
//Database initialization
using (var serviceScope = app.Services.GetService<IServiceScopeFactory>()?.CreateScope())
{
    var context = serviceScope?.ServiceProvider.GetRequiredService<MyContext>();
    context?.Database.Migrate();
}
### 使用Docker安装PostgreSQL教程 #### 准备工作 确保服务器已正确安装DockerDocker Compose,可以通过如下命令验证版本信息[^3]: ```bash docker --version docker-compose --version ``` 如果上述命令返回相应软件的版本号,则说明环境准备就绪。 #### 创建项目目录 建议为PostgreSQL创建专门的工作目录以便管理和维护。例如,在`/opt`下新建名为`postgres-docker`的文件夹作为项目的根目录。 #### 获取官方镜像 根据需求选择合适的PostgreSQL版本进行下载。对于希望部署PostgreSQL 12的情况,可以执行以下指令来获取对应标签的镜像文件[^1]: ```bash docker pull postgres:12 ``` 此操作会从Docker Hub远程仓库同步最新的PostgreSQL 12.x系列稳定版至本地缓存区等待后续调用。 #### 启动并配置容器实例 利用之前拉取下来的镜像快速搭建一个新的服务节点。下面给出了一组参数化的启动语句用于定制化新建立的服务特性[^5]: ```bash docker run \ --name my-postgres \ -e POSTGRES_PASSWORD=mysecretpassword \ -e POSTGRES_DB=mydatabase \ -e POSTGRES_USER=myuser \ -p 5432:5432 \ -v /path/to/local/data:/var/lib/postgresql/data \ -d postgres:12.2 ``` 这里定义了一些重要的环境变量: - `POSTGRES_PASSWORD`: 设置root账户(`postgres`)登录时所需的认证凭证; - `POSTGRES_DB`: 初始化阶段自动创建的目标数据库名; - `POSTGRES_USER`: 新增一个具有完全权限的操作员账号; - `-p 5432:5432`: 将宿主机上的TCP 5432端口转发给容器内部监听同一编号的位置; - `-v ...`: 映射外部存储路径到容器内的数据保存位置,实现持久化管理机制; #### 测试连接功能 为了确认一切正常运作,可借助psql客户端工具或者其他图形界面应用程序尝试接入刚刚设立好的PostgreSQL实例。只需提供正确的访问地址(通常是localhost)以及上面设定的相关凭据即可完成初步检验过程[^2]。 #### 日常运维指导 针对日常运营过程中可能遇到的任务场景,比如调整最大并发数限制、优化查询性能等高级话题不在本篇幅讨论范围内。但对于基本的生命周期控制动作如停止、删除现有容器对象还是有必要提及一下标准做法: - 停止正在运行中的容器:`docker stop my-postgres` - 移除不再使用的容器实体:`docker rm my-postgres` 以上就是基于Docker平台构建PostgreSQL关系型数据库系统的简易入门指南[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值