当前位置: 首页 > 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);

http://www.xdnf.cn/news/981883.html

相关文章:

  • Spring MVC完全指南 - 从入门到精通
  • 华为交换机远程登录配置
  • 大语言模型的局限性与RAG基本框架和工作流实例
  • python数据结构和算法(4)
  • R语言缓释制剂QBD解决方案之三
  • 浅析hashmap
  • 7.7 Extracting and saving responses
  • C# 与低代码平台的融合:以活字格为例的 Web API 开发实践
  • 布尔字段命名陷阱:避免序列化错误的关键
  • pytorch 中前向传播和后向传播的自定义函数
  • vscode界面设置透明度--插件Glasslt-VSC
  • 【DETR目标检测】ISTD-DETR:一种基于DETR与超分辨率技术的红外小目标检测深度学习算法
  • 《HarmonyOSNext弹窗:ComponentContent动态玩转企业级弹窗》
  • 新闻类鸿蒙应用全链路测试实践:性能、兼容性与体验的深度优化
  • React Context 性能问题及解决方案深度解析
  • 【普及/提高−】P1025 ——[NOIP 2001 提高组] 数的划分
  • Cilium动手实验室: 精通之旅---23.Advanced Gateway API Use Cases
  • codeforces C. Devyatkino
  • Java并发工具包
  • 【59 Pandas+Pyecharts | 淘宝华为手机商品数据分析可视化】
  • 深度解读谷歌Brain++液态神经网络:重塑动态智能的流体计算革命
  • Gogs:一款极易搭建的自助 Git 服务
  • [Java恶补day22] 240. 搜索二维矩阵Ⅱ
  • React第六十节 Router中createHashRouter的具体使用详解及案例分析
  • android studio向左向右滑动页面
  • Babylon.js引擎
  • MMDG++:构筑多模态人脸防伪新防线,攻克伪造攻击与场景漂移挑战
  • java面向对象高级部分
  • 大数据服务器和普通服务器之间的区别
  • LDStega论文阅读笔记