在本文,尝试使用 Docker 运行 PostgreSQL ,为了适配 goalert 项目,因为从来没有尝试过使用 PostgreSQL
了解PostgreSQL数据库
在我们继续运行 PostgreSQL 数据库的 Docker 容器之前,我们先来了解一下 PostgreSQL 数据库。 PostgreSQL 是一个开源 RDMS,类似于 MySQL。它是一个面向对象的数据库,但我们可以处理结构化和非结构化数据。
PostgreSQL 数据库可以运行在各种平台上,包括 Windows、Mac OS X 和 Linux。它还提供高级数据类型和性能优化功能来存储和扩展复杂的数据库工作负载。
一些常见的 postgres 镜像
镜像 | 说明 |
---|---|
postgres:latest | 最新的一个稳定版本 |
postgres:17 | PostgreSQL version 14.x (x为最近的一次 patch) |
postgres:17.4 | 17.4 一个具体的版本 |
postgres:bookworm | 使用 Debian Bookworm (12) 构建的 PostgreSQL |
postgres:15-bookworm | 使用 Debian Bookworm (12) 构建的 PostgreSQL 15 |
使用公共镜像运行PostgreSQL
要使用 Docker 运行 PostgreSQL,我们首先需要拉取 Docker Hub 上可用的 postgres 公共镜像:
|
|
在上面的命令中,我们拉取了 postgres 最新的稳定版镜像。 如果要指定版本的 postgres 镜像,可以使用以下命令
|
|
这里将使用 postgres:14.2 版本来运行 Postgres 的容器,这里命令主要为 Linux
|
|
实际执行命令
|
|
如果在 window 或 wsl 上运行,可以执行下面命令
|
|
POSTGRES_PASSWORD, 这个变量设置超级 PostgreSQL 用户的密码,必须设置并且不能为空
POSTGRES_USER, 这个变量是和上面的关联使用的,用于设置一个指定的超级用户,默认为 “postgres”
更多变量参考 [1]
配置
Setting up persistent storage
|
|
Exposing ports to connect to PostgreSQL
|
|
Connecting using the psql command line tool
psql 是 PostgreSQL 的官方客户端工具,可以让用户使用这个命令行工具与数据库进行交互,要连接数据库可以使用下面命令
|
|
命令 psql -l 可以列出所有正在运行的数据库
命令 createdb 可以创建一个数据库
|
|
创建数据库
创建数据库可以通过其他数据库创建命令进行
|
|
官方也提供了快速创建的命令,不需要使用 psql 链接上 postgres 后再创建
|
|
createdb 就是连接到 postgres 数据库并且发出 CREATE DATABASE
命令注意不带任何参数的 createdb
将创建一个使用当前用户名的数据库 [3]。
Reference
[2] PostgreSQL in Docker: A Step-by-Step Guide for Beginners
[3] 23.2. 创建一个数据库
[4] Chapter 10. Migrating authentication from nslcd to SSSD
[5] OpenLDAP Client 2.4.23: TLS negotiation failure
[6] Chapter 10. Migrating authentication from nslcd to SSSD
[7] Configure SSSD