目标
在BC-Linux的Docker上面手动运行postgresql17容器。
步骤
pg离线镜像文件
# 拉取得pg17 x86_64离线镜像
docker pull --platform linux/amd64 postgres:17-alpine3.20
# 保存pg17离线镜像文件
docker save -o postgres17.tar postgres
pg自定义配置文件
# 获取默认配置
docker run -i --rm postgres:17-alpine3.20 cat /usr/local/share/postgresql/postgresql.conf.sample > default-postgres.conf
pg17_15">运行pg17容器
docker run -d \--name postgres17 \-e POSTGRES_PASSWORD=<密码> \-e PGDATA=/var/lib/postgresql/data/pgdata \-v "$PWD/data":/var/lib/postgresql/data \-v "$PWD/postgres.conf":/etc/postgresql/postgresql.conf \-p 5432:5432 \postgres:17-alpine3.20 -c 'config_file=/etc/postgresql/postgresql.conf'
检查
然后通过如下命令检查:
[docker@localhost pg17]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
627b51a36594 postgres:17-alpine3.20 "docker-entrypoint.s…" 5 seconds ago Up 5 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres17
测试
成功创建pg容器之后,使用如下命令进行检查:
[docker@localhost pg17]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
627b51a36594 postgres:17-alpine3.20 "docker-entrypoint.s…" 5 seconds ago Up 5 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres17
检查之前再配置文件中添加的一行变动配置:
max_connections = 700
登录到pg容器里面,检查上述配置:
[docker@localhost pg17]$ docker exec -it postgres17 sh
/ # psql -U postgres postgres
psql (17.2)
Type "help" for help.postgres=# show max_connections;max_connections
-----------------700
(1 row)postgres=#
从上面结果,可知,我们的配置生效了。
总结
到这里我们pg17在docker上面部署就完成了。接下来,只要导入数据就行了。这里就不再进一步介绍了。
参考
- postgresql清理空闲连接
- PostgreSQL初始化数据库和用户
- postgres
- How to persist and backup data of a PostgreSQL Docker container
- max_connections
- docker container exec