插件窝 干货文章 Docker 部署 pSQL 服务器的详细教程

Docker 部署 pSQL 服务器的详细教程

postgres PostgreSQL Docker 容器 1011    来源:    2025-04-01

Docker 部署 PostgreSQL 服务器详细教程

PostgreSQL (pSQL) 是一个功能强大的开源关系型数据库系统。使用 Docker 部署 PostgreSQL 可以快速搭建开发、测试或生产环境。以下是详细步骤:

1. 准备工作

确保已安装 Docker 和 Docker Compose:

docker --version
docker-compose --version

2. 快速启动 PostgreSQL 容器

最简单的方式是直接运行以下命令:

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

参数说明: - --name some-postgres:为容器指定名称 - -e POSTGRES_PASSWORD=mysecretpassword:设置 postgres 用户的密码 - -d:后台运行容器 - postgres:使用官方 PostgreSQL 镜像

3. 使用 Docker Compose 部署(推荐)

创建 docker-compose.yml 文件:

version: '3.8'

services:
  postgres:
    image: postgres:latest
    container_name: postgres
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: mydb
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  postgres_data:

启动服务:

docker-compose up -d

4. 配置参数说明

可以通过环境变量配置 PostgreSQL:

环境变量 描述 默认值
POSTGRES_USER 超级用户 postgres
POSTGRES_PASSWORD 超级用户密码 -
POSTGRES_DB 初始数据库 与 POSTGRES_USER 相同
POSTGRES_INITDB_ARGS initdb 额外参数 -
POSTGRES_HOST_AUTH_METHOD 认证方法 md5
PGDATA 数据目录 /var/lib/postgresql/data

5. 持久化数据

使用 Docker 卷持久化数据:

docker volume create postgres_data
docker run --name some-postgres -v postgres_data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres

6. 连接到 PostgreSQL

从容器内部连接:

docker exec -it some-postgres psql -U postgres

从外部客户端连接:

psql -h localhost -U postgres

7. 常用管理命令

  • 查看运行中的容器:

    docker ps
    
  • 停止容器:

    docker stop some-postgres
    
  • 启动容器:

    docker start some-postgres
    
  • 删除容器(不会删除数据卷):

    docker rm some-postgres
    
  • 查看日志:

    docker logs some-postgres
    

8. 高级配置

自定义配置文件

创建自定义 postgresql.conf 文件,然后挂载到容器中:

docker run --name some-postgres \
  -v /path/to/custom/postgresql.conf:/etc/postgresql/postgresql.conf \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -d postgres \
  -c 'config_file=/etc/postgresql/postgresql.conf'

设置时区

environment:
  TZ: Asia/Shanghai
  PGTZ: Asia/Shanghai

9. 备份与恢复

备份数据库

docker exec some-postgres pg_dump -U postgres mydb > backup.sql

恢复数据库

cat backup.sql | docker exec -i some-postgres psql -U postgres mydb

10. 安全建议

  1. 不要使用默认的 postgres 用户进行应用连接
  2. 为每个应用创建单独的用户和数据库
  3. 定期备份重要数据
  4. 考虑使用网络限制,只允许特定容器访问 PostgreSQL

通过以上步骤,您已经成功使用 Docker 部署了 PostgreSQL 服务器。根据实际需求调整配置参数即可。