Docker搭建Postgresql数据库

使用Docker搭建Postgresql数据库,及设置远程访问

一、拉取Postgresq镜像

docker pull postgres

二、构建镜像容器

docker run -it --name postgres --restart always -e POSTGRES_PASSWORD='abc123' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/postgres/data:/var/lib/postgresql -p 55433:5432 -d postgres

–name : 自定义容器名称
POSTGRES_PASSWORD:数据库密码
-e ALLOW_IP_RANGE=0.0.0.0/0,这个表示允许所有ip访问,如果不加,则非本机 ip 访问不了
-v :进行映射,本地目录:容器内路径
-p:映射端口,宿主机端口:容器端口
最后是 镜像名称:端口号

三、进入postgres容器

docker exec -it postgres bash

四、切换当前用户,再登录数据库

将当前root切换成postgres

su postgres

输入用户名,密码再命令执行完后,再根据提示输入

psql -U postgres -W

输入密码,登录成功
在这里插入图片描述

五、设置远程访问许可(很重要)

共需要修改两个配置文件:pg_hba.conf、postgresql.conf,步骤分别如下:

1、修改postgres配置文件

首先,确认已进入容器,再按下列步骤操作:

1)、修改pg_hba.conf文件

A、用命令将postgres中的pg_hba.conf文件,复制到目录/home中
docker cp postgres:/var/lib/postgresql/data/pg_hba.conf /home
B、用Xftp连接服务器,找到home下的pg_hba.conf,并用记事本打开及修改用户的访问权限(#开头的行是注释内容):
# TYPE DATABASE  USER    CIDR-ADDRESS     METHOD
 # "local" is for Unix domain socket connections only
 local all    all               trust
 # IPv4 local connections:
 host  all    all    127.0.0.1/32     trust
 *host  all    all    0.0.0.1/0    md5*
 # IPv6 local connections:
 host  all    all    ::1/128       trust

####C、用命令将修改后的文件,替换掉原来的配置文件

docker cp /home/pg_hba.conf postgres:/var/lib/postgresql/data

2)、修改postgresql.conf文件

如上述修改pg_hba.conf一样,先复件到/home文件夹中,然后打开编辑,最后替换掉原配置文件。
定位到 #listen_addresses = ’localhost’,再将行开头都#去掉,并将行内容修改为 localhost 改成:*

listen_addresses = ’*

默认只接受来自本机localhost的连接请求,* 允许数据库服务器监听来自任何主机的连接请求。

2、设置防火墙

首先,执行exit命令,退出postgres用户,再执行一次exit,退出容器。然后才可以进行防火墙设置。

1)、检查 firewalld 启动状态

systemctl status firewalld

在这里插入图片描述
若未启动,则执行启动命令:

systemctl start firewalld

2)、检查 firewall-cmd 运行状态

firewall-cmd --state

在这里插入图片描述

3)、防火墙正常,则分别执行以下命令,进行配置

firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload

在这里插入图片描述
重启防火墙

systemctl stop firewalld.service
systemctl start firewalld.service

六、用pgAdmin来Add New Server,进行验证即可。

在这里插入图片描述
在这里插入图片描述
至此,postgresql数据库安装完成,

  • 12
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
要在 Docker 中部署 PostgreSQL 集群,可以使用 Docker Compose 来管理多个容器。以下是部署 PostgreSQL 集群的步骤: 1. 创建 Docker Compose 配置文件 在任意目录下创建一个 `docker-compose.yml` 文件,填写以下内容: ``` version: '3' services: primary: image: postgres ports: - "5432:5432" environment: - POSTGRES_PASSWORD=your_password - POSTGRES_USER=your_user - POSTGRES_DB=your_database volumes: - primary:/var/lib/postgresql/data standby: image: postgres environment: - POSTGRES_PASSWORD=your_password - POSTGRES_USER=your_user - POSTGRES_DB=your_database - STANDBY=1 volumes: - standby:/var/lib/postgresql/data depends_on: - primary volumes: primary: standby: ``` 其中,`primary` 和 `standby` 分别表示主节点和备份节点,`POSTGRES_PASSWORD`、`POSTGRES_USER` 和 `POSTGRES_DB` 分别是 PostgreSQL 的密码、用户名和数据库名。`volumes` 指定了数据卷的挂载位置,这可以确保数据在容器重启后可以被保留。 2. 启动 PostgreSQL 集群 在配置文件所在目录下执行以下命令来启动 PostgreSQL 集群: ``` docker-compose up -d ``` 这条命令会在后台启动两个容器,一个是主节点,一个是备份节点。 3. 切换到主节点 进入主节点容器内: ``` docker exec -it <primary_container_name> bash ``` 切换到 PostgreSQL 环境: ``` psql -U your_user your_database ``` 执行以下命令,将主节点设置为可写: ``` SELECT pg_create_physical_replication_slot('replica_slot'); ``` 4. 切换到备份节点 进入备份节点容器内: ``` docker exec -it <standby_container_name> bash ``` 切换到 PostgreSQL 环境: ``` psql -U your_user your_database ``` 执行以下命令,将备份节点设置为只读: ``` SELECT pg_create_physical_replication_slot('replica_slot', true); SELECT pg_basebackup('host=<primary_container_name> port=5432 user=your_user password=your_password sslmode=prefer', '-X stream -c fast -R -P'); ``` 其中,`<primary_container_name>` 是主节点容器的名称。 5. 测试 PostgreSQL 集群 在主节点中创建一个表: ``` CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(50)); INSERT INTO test (name) VALUES ('test'); ``` 在备份节点中查询该表: ``` SELECT * FROM test; ``` 如果能够查询到数据,说明 PostgreSQL 集群已经搭建成功。 以上就是在 Docker 中部署 PostgreSQL 集群的步骤,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值