夜雨聆风学习资料网

ARTICLE · 1110395

超简单!Docker 快速安装 PostgreSQL 数据库教程

超简单!Docker 快速安装 PostgreSQL 数据库教程

PostgreSQL(简称PG)是一款开源稳定的关系型数据库,借助Docker安装无需复杂的环境配置,一键即可部署,兼顾高效性与便携性。

今天给大家分享两种实用安装方式,新手推荐快速部署,生产环境优先使用docker-compose。

一、快速部署:docker run 单行安装

首先拉取稳定版PG镜像,推荐16版本,兼容性极强:

docker pull postgres:16

执行启动命令,配置账号、密码、时区和数据持久化,避免容器删除丢失数据:

docker run -d \  --name pg16 \  -p 5432:5432 \  -e POSTGRES_USER=postgres \  -e POSTGRES_PASSWORD=123456 \  -e POSTGRES_DB=testdb \  -e TZ=Asia/Shanghai \  -v /data/postgres/pg16_data:/var/lib/postgresql/data \  --restart=always \  postgres:16

参数说明:

  • • --name pg16:容器名
  • • -p 5432:5432:宿主机端口:容器端口
  • • POSTGRES_PASSWORD必填,超级用户密码
  • • POSTGRES_DB=testdb:首次初始化自动创建 testdb 库
  • • TZ=Asia/Shanghai 设置时区
  • • -v pg16_data:/var/lib/postgresql/data:命名卷持久化数据,删除容器数据不会丢
  • • --restart=always 开机自启

命令核心配置:设置开机自启、上海时区,默认端口5432,自动创建测试数据库,数据持久化挂载到本地目录。

安装完成后,输入 docker ps | grep pg16 查看容器运行状态,通过 docker exec -it pg16 psql -U postgres -d testdb 进入数据库,执行SELECT version(); 即可验证安装成功。

# 查看容器是否运行docker ps | grep pg16# 进入容器内psql客户端docker exec -it pg16 psql -U postgres -d testdb

登录成功后,执行测试 sql:

SELECT version();

二、生产优选:docker-compose 安装

新建docker-compose.yml配置文件,规范化管理容器,配置参数与快速版一致,支持自定义初始化脚本。保存文件后,执行 docker compose up -d 后台启动服务,通过docker compose logs -f pg16查看运行日志。

新建 docker-compose.yml

version: '3.8'services:  postgres:    image: postgres:16    container_name: pg16    restart: always    ports:      - "5432:5432"    environment:      POSTGRES_USER: postgres      POSTGRES_PASSWORD: 123456      POSTGRES_DB: testdb      TZ: Asia/Shanghai    volumes:      - pg16_data:/var/lib/postgresql/data# 可选:挂载初始化sql,容器首次启动自动执行# - ./init:/docker-entrypoint-initdb.dvolumes:  pg16_data:

启动:

# 后台启动docker compose up -d# 查看日志docker compose logs -f pg16

三、常用基础操作

日常可通过简单命令管理容器:启停容器、删除容器、清空数据卷,同时附带在线改密码指令,满足日常运维需求,全程操作简单、零门槛。

# 停止容器docker stop pg16# 启动docker start pg16# 删除容器(卷pg16_data不会被删除)docker rm pg16# 删除数据卷(清空所有数据库数据,谨慎!)docker volume rm pg16_data

修改 postgres 密码示例(容器已启动后)

docker exec -it pg16 psql -U postgresALTER USER postgres WITH PASSWORD 'newpass';

相关学习资料