当前位置: 首页 > news >正文

docker 安装postgre并使用php进行连接

一、创建postgre的容器

方法1:  docker run 创建容器

docker run --network=你的network --name 容器名称 -v 你电脑本地文件地址:/var/lib/postgresql/data -e POSTGRES_PASSWORD=密码 -d -p 5432:5432 postgreseg:
docker run --network=lnmp_app-net --name pgtest -v /test/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -d -p 5432:5432 postgres

1、若不知道已有那些network,可以通过下面的命令查看所有,NAME列就是你配置时填network时可选的内容,因为需要和php打通,所以network要填写和php容器一样的network

docker network ls 

 

 如果不知道php容器的network,则可以使用以下命令查看,在返回的JSON中能看到Networks下配置的network名叫lnmp_app-net,创建postgre的容器的时候就要指定network为lnmp_app-net

docker inspect 你的容器名称或者容器IDeg:查看容器名称为PHP的使用的那个 network
docker inspect php


2、如果一个network都不存在,可以选择重新创建l

docker network create [选项] <网络名称>

方法2 使用docker-compose.yml创建容器

创建docker-compose.yml文件,并进入该文件目录运行 docker-compose -up

version: '3.8'services:db:image: postgres:latestrestart: alwayscontainer_name: 你的容器名称environment:POSTGRES_PASSWORD: 你的密码ports:- "5432:5432"volumes:- 文件保存地址:/var/lib/postgresql/datanetworks:- network的名称
volumes:db-data:
networks:network的名称:driver: bridge示例: 
version: '3.8'services:db:image: postgres:latestrestart: alwayscontainer_name: pgtestenvironment:POSTGRES_PASSWORD: 123123ports:- "5432:5432"volumes:- ./test/data:/var/lib/postgresql/datanetworks:- app-net
volumes:db-data:
networks:app-net:driver: bridge

创建好docker-compose.yml文件之后,在该文件同目录下运行下面的命令

docker-composer up -d

执行成功后就能在docker中看到一个名字为pgtest的容器了,需要注意的是,方法2执行完成之后,该容器是处于二级目录下的。

二、允许postgre从外部访问

找到创建容器时候,挂载在本地电脑的data文件夹,上面两个方法示例中都是保存在test/data文件下,在这个文件夹下

1、找到并打开pg_hbc.conf文件,输入以下内容,该内容是允许任何外部ip来访问,如果你要指定ip,则将0.0.0.0换成你要指定的IP

 host    all             all             0.0.0.0/0               md5

2、在同样的文件夹下找到并打开postgresql.conf文件,并找到写有listen_addresses的这一行,并将其改为以下内容

listen_addresses = '*'

三、通过PHP进行访问postgre

需要注意的是,如果php和postgre是同一个Docker网络中的服务,host要写成服务名,而不是localhost或127.0.0.1,而此处的服务名就是指postgre容器的名称,因为上文演示时给postgre的容器命名为pgtest,所以此处的host=pgtest

 $conn_string = "host=pgtest port=5432 dbname=test user=postgre password=123123";$dbconn = pg_connect($conn_string) or die('Could not connect');$result = pg_query($dbconn, $query);if ($result) {echo 'success';} else {echo "Error inserting data: " . pg_last_error($dbconn);}pgclose($dbconn);

相关文章:

  • Nextcloud的性能提升3倍的部署说明:你的nextcloud需要重新部署了
  • day64—回溯—组合数(LeetCode-77)
  • Verilog:流水线乘法器
  • Unity Android 启动应用的时候黑屏问题
  • 关于亚马逊WOOT折扣力度
  • 【沉浸式解决问题】csdn无法发布文章
  • 最长和谐子序列
  • 常见无法用初等函数表示的不定积分(表格总结)
  • 数据隐私是什么?如何做好数据隐私规范?
  • MacBook M1 Pro下载安装MySql
  • 【2025最新版】Node.js详细安装配置教程(Windows系统)附安装包
  • (九)现代循环神经网络(RNN):从注意力增强到神经架构搜索的深度学习演进
  • Spring Data MongoDB 提供了哪些核心组件?
  • GJB151B在151A的比较
  • 微信小程序中wxs
  • 新闻类鸿蒙应用功耗危机以及优化方案
  • Antv g6 tooltip 实现hover时可点击tooltip里的内容
  • 达梦数据库DCA考试命令行操作
  • defaultdict 在python中的作用
  • 【Cross-Language Binary-Source Code Matching with Intermediate Representations】
  • 建材在哪些网站做/商丘优化公司
  • 做网站用的笔记本配置/韩国seocaso
  • 北京十大营销策划公司/焦作网站seo
  • 网站开发前端和后端工作/百度推广后台管理
  • android网站开发实例/注册域名
  • php网站开发实例报告/360广告投放平台