前言
在 DB-Engines
提供的数据中,PostgreSQL
的增长势头依然强劲,而 MySQL
的增长似乎已经放缓。开源社区中,基于 PostgreSQL
的各种项目如雨后春笋般涌现,呈现出蓬勃发展的态势。面对这样的趋势,找不到不转向使用 PostgreSQL
的理由。
使用 Docker Compose 进行安装
前置准备工作
-
版本选择:
PostgreSQL
的最新稳定版为16.4
,学习的时候直接以最新版本来进行入门。针对于镜像选择,虽然alpine
系统的镜像体积大小可以控制到 100Mb 以内,但是避免遇到前期无法解决的系统问题还是选择基于Debian 12
来构建的镜像,最终选择使用postgres:16-bookworm
。 -
网络初始化:我们这里会安装一个
PostgreSQL
实例以及一个pgAdmin
在线管理端。所以我们需要先创建一个公共的网络命名空间供下面使用。docker network create net_postgresql
安装 PostgreSQL 实例
networks:
net_postgresql:
external: true
volumes:
vol_postgresql_data:
services:
postgresql:
container_name: postgresql
image: postgres:16-bookworm
networks:
- net_postgresql
environment:
- TZ=Asia/Shanghai
- POSTGRES_HOST_AUTH_METHOD=trust
ports:
- 5432:5432
volumes:
- vol_postgresql_data:/var/lib/postgresql
restart: unless-stopped
使用上面定义好的编排文件直接进行启动:docker compose up -d
,启动完成之后可以看下端口正常映射出来了。
安装 pgAdmin 实例
networks:
net_postgresql:
external: true
volumes:
vol_pgadmin_data:
services:
postgresql:
container_name: pgadmin
image: dpage/pgadmin4:8
networks:
- net_postgresql
environment:
- TZ=Asia/Shanghai
- PGADMIN_DEFAULT_EMAIL=admin@admin.com
- PGADMIN_DEFAULT_PASSWORD=admin
ports:
- 5433:80
volumes:
- vol_pgadmin_data:/var/lib/pgadmin
restart: unless-stopped
使用上面定义好的编排文件直接进行启动:docker compose up -d
,启动完成之后可以看下使用了 5433
端口来映射 pgAdmin
的 80
端口。
通过浏览器打开也能正常看到 pgAdmin
的登录界面。
pgAdmin 来连接 PostgreSQL 实例
先使用环境变量预先设置的的账号密码来登录 pgAdmin
(admin@admin.com/admin
),登录成功之后可以看到主页面。我们先来添加把我们新建的实例添加进来:
- 点击添加服务器,名称填写
PostgreSQL
。
- 切换到连接,主机名称/地址直接填写
Docker Compose
内服务名称就不需要关心具体IP
地址了。数据库选择postgres
,用户名也选择postgres
。由于我们创建实例的时候没有设置密码相关,这里就不需要填写密码了。填写完成之后就可以保存了。
- 保存成功之后可以自动连接,左侧栏就可以直接看到我们新建的
PostgreSQL
实例相关的信息了。