PostgreSQL (pSQL) 是一个功能强大的开源关系型数据库系统。使用 Docker 部署 PostgreSQL 可以快速搭建开发、测试或生产环境。以下是详细步骤:
确保已安装 Docker 和 Docker Compose:
docker --version
docker-compose --version
最简单的方式是直接运行以下命令:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
参数说明:
- --name some-postgres
:为容器指定名称
- -e POSTGRES_PASSWORD=mysecretpassword
:设置 postgres 用户的密码
- -d
:后台运行容器
- postgres
:使用官方 PostgreSQL 镜像
创建 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
可以通过环境变量配置 PostgreSQL:
环境变量 | 描述 | 默认值 |
---|---|---|
POSTGRES_USER | 超级用户 | postgres |
POSTGRES_PASSWORD | 超级用户密码 | - |
POSTGRES_DB | 初始数据库 | 与 POSTGRES_USER 相同 |
POSTGRES_INITDB_ARGS | initdb 额外参数 | - |
POSTGRES_HOST_AUTH_METHOD | 认证方法 | md5 |
PGDATA | 数据目录 | /var/lib/postgresql/data |
使用 Docker 卷持久化数据:
docker volume create postgres_data
docker run --name some-postgres -v postgres_data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker exec -it some-postgres psql -U postgres
psql -h localhost -U postgres
查看运行中的容器:
docker ps
停止容器:
docker stop some-postgres
启动容器:
docker start some-postgres
删除容器(不会删除数据卷):
docker rm some-postgres
查看日志:
docker logs some-postgres
创建自定义 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
docker exec some-postgres pg_dump -U postgres mydb > backup.sql
cat backup.sql | docker exec -i some-postgres psql -U postgres mydb
通过以上步骤,您已经成功使用 Docker 部署了 PostgreSQL 服务器。根据实际需求调整配置参数即可。