bitnamisecure/postgresqlPostgreSQL(Postgres)是一款开源对象关系型数据库,以可靠性和数据完整性著称。它支持ACID事务、外键、连接、视图、触发器和存储过程。
PostgreSQL 概述
商标说明:本软件列表由Bitnami打包。所提及的相关商标归各自公司所有,使用这些商标并不意味着任何关联或背书。
consoledocker run --name postgresql REGISTRY_NAME/bitnami/postgresql:latest
警告:此快速设置仅适用于开发环境。建议您更改不安全的默认凭据,并查看配置部分中的可用配置选项,以实现更安全的部署。
仅部分 BSI 应用可免费使用。想要访问完整的应用目录并获得企业支持?立即尝试 Bitnami 安全镜像商业版。
将 Bitnami 应用部署为 Helm 图表是在 Kubernetes 上使用我们应用的最简单方法。有关安装详情,请参阅 Bitnami PostgreSQL Chart GitHub 仓库。
非 root 容器镜像增加了额外的安全层,通常推荐用于生产环境。然而,由于它们以非 root 用户运行,通常无法执行特权任务。在我们的文档中了解更多关于非 root 容器的信息 in our docs。
Dockerfile 链接了解更多关于 Bitnami 标签策略以及滚动标签和不可变标签之间的区别,请参阅我们的文档页面 in our documentation page。
您可以通过查看分支文件夹中的 tags-info.yaml 文件(即 bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml)来了解不同标签之间的对应关系。
通过关注 bitnami/containers GitHub 仓库 订阅项目更新。
获取 Bitnami PostgreSQL Docker 镜像的推荐方式是从 Docker Hub registry 拉取预构建镜像。
consoledocker pull REGISTRY_NAME/bitnami/postgresql:latest
要使用特定版本,您可以拉取带版本的标签。您可以在 Docker Hub Registry 中查看 可用版本列表。
consoledocker pull REGISTRY_NAME/bitnami/postgresql:[TAG]
如果需要,您也可以通过克隆仓库、进入包含 Dockerfile 的目录并执行 docker build 命令来自行构建镜像。请记住在下面的示例命令中用正确的值替换 APP、VERSION 和 OPERATING-SYSTEM 路径占位符。
consolegit clone [***] cd bitnami/APP/VERSION/OPERATING-SYSTEM docker build -t REGISTRY_NAME/bitnami/APP:latest .
如果删除容器,所有数据和配置都将丢失,下次运行镜像时数据库将重新初始化。为避免数据丢失,您应该挂载一个即使容器被删除后仍能保留的卷。
要实现持久化,您应该在 /bitnami/postgresql 路径挂载一个目录。如果挂载的目录为空,将在首次运行时初始化。
consoledocker run \ -v /path/to/postgresql-persistence:/bitnami/postgresql \ REGISTRY_NAME/bitnami/postgresql:latest
或修改此仓库中提供的 docker-compose.yml 文件:
yamlservices: postgresql: ... volumes: - /path/to/postgresql-persistence:/bitnami/postgresql ...
注意:由于这是一个非 root 容器,挂载的文件和目录必须对 UID
1001具有适当的权限。
使用 Docker 容器网络,在容器内运行的 PostgreSQL 服务器可以轻松被您的应用容器访问。
连接到同一网络的容器可以使用容器名称作为主机名进行通信。
在此示例中,我们将创建一个 PostgreSQL 客户端实例,该实例将连接到与客户端在同一 Docker 网络上运行的服务器实例。
consoledocker network create app-tier --driver bridge
使用 --network app-tier 参数执行 docker run 命令,将 PostgreSQL 容器附加到 app-tier 网络。
consoledocker run -d --name postgresql-server \ --network app-tier \ REGISTRY_NAME/bitnami/postgresql:latest
最后,我们创建一个新的容器实例来启动 PostgreSQL 客户端并连接到上一步创建的服务器:
consoledocker run -it --rm \ --network app-tier \ REGISTRY_NAME/bitnami/postgresql:latest psql -h postgresql-server -U postgres
如果未指定,Docker Compose 会自动设置一个新网络并将所有部署的服务附加到该网络。但是,我们将显式定义一个名为 app-tier 的新 bridge 网络。在此示例中,假设您希望从自己的自定义应用镜像(在以下代码段中由服务名称 myapp 标识)连接到 PostgreSQL 服务器。
yamlversion: '2' networks: app-tier: driver: bridge services: postgresql: image: REGISTRY_NAME/bitnami/postgresql:latest networks: - app-tier myapp: image: YOUR_APPLICATION_IMAGE networks: - app-tier
重要:
- 请将上述代码段中的 YOUR_APPLICATION_IMAGE 占位符更新为您的应用镜像
- 在应用容器中,使用主机名
postgresql连接到 PostgreSQL 服务器
使用以下命令启动容器:
consoledocker-compose up -d
| 名称 | 描述 | 默认值 |
|---|---|---|
POSTGRESQL_VOLUME_DIR | 持久化基础目录 | /bitnami/postgresql |
POSTGRESQL_DATA_DIR | PostgreSQL 数据目录 | ${POSTGRESQL_VOLUME_DIR}/data |
POSTGRESQL_EXTRA_FLAGS | PostgreSQL 初始化额外标志 | nil |
POSTGRESQL_INIT_MAX_TIMEOUT | 最大初始化等待超时时间 | 60 |
POSTGRESQL_PGCTLTIMEOUT | pg_ctl 命令的最大等待超时时间 | 60 |
POSTGRESQL_SHUTDOWN_MODE | pg_ctl stop 命令的默认模式 | fast |
POSTGRESQL_CLUSTER_APP_NAME | 复制集群默认应用名称 | walreceiver |
POSTGRESQL_DATABASE | 默认 PostgreSQL 数据库 | postgres |
POSTGRESQL_INITDB_ARGS | PostgreSQL initdb 操作的可选参数 | nil |
ALLOW_EMPTY_PASSWORD | 允许无密码访问 | no |
POSTGRESQL_INITDB_WAL_DIR | 可选的 init db wal 目录 | nil |
POSTGRESQL_MASTER_HOST | PostgreSQL 主节点主机(从节点使用) | nil |
POSTGRESQL_MASTER_PORT_NUMBER | PostgreSQL 主节点端口(从节点使用) | 5432 |
POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS | 应使用同步复制的 PostgreSQL 副本数量 | 0 |
POSTGRESQL_SYNCHRONOUS_REPLICAS_MODE | PostgreSQL 同步复制模式(值:empty、FIRST、ANY) | nil |
POSTGRESQL_PORT_NUMBER | PostgreSQL 端口号 | 5432 |
POSTGRESQL_ALLOW_REMOTE_CONNECTIONS | 修改 pg_hba 设置以允许外部用户访问 | yes |
POSTGRESQL_REPLICATION_MODE | PostgreSQL 复制模式(值:master、slave) | master |
POSTGRESQL_REPLICATION_USER | PostgreSQL 复制用户 | nil |
POSTGRESQL_REPLICATION_USE_PASSFILE | 使用 PGPASSFILE 而非 PGPASSWORD | no |
POSTGRESQL_REPLICATION_PASSFILE_PATH | 密码文件存储路径 | ${POSTGRESQL_CONF_DIR}/.pgpass |
POSTGRESQL_SR_CHECK | 为流复制检查在 PostgreSQL 上创建用户 | no |
POSTGRESQL_SR_CHECK_USERNAME | 流复制检查用户 | sr_check_user |
POSTGRESQL_SR_CHECK_DATABASE | 流复制检查数据库 | postgres |
POSTGRESQL_SYNCHRONOUS_COMMIT_MODE | 在从节点启用同步复制(数量由 POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS 定义) | on |
POSTGRESQL_FSYNC | 启用预写日志的 fsync | on |
POSTGRESQL_USERNAME | PostgreSQL 默认用户名 | postgres |
POSTGRESQL_ENABLE_LDAP | 为 PostgreSQL 身份验证启用 LDAP | no |
POSTGRESQL_LDAP_URL | PostgreSQL LDAP 服务器 URL(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_PREFIX | PostgreSQL LDAP 前缀(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SUFFIX | PostgreSQL LDAP 后缀(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SERVER | PostgreSQL LDAP 服务器(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_PORT | PostgreSQL LDAP 端口(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SCHEME | PostgreSQL LDAP 方案(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_TLS | PostgreSQL LDAP TLS 设置(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_BASE_DN | PostgreSQL LDAP 基础 DN 设置(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_BIND_DN | PostgreSQL LDAP 绑定 DN 设置(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_BIND_PASSWORD | PostgreSQL LDAP 绑定密码(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SEARCH_ATTR | PostgreSQL LDAP 搜索属性(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SEARCH_FILTER | PostgreSQL LDAP 搜索过滤器(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_INITSCRIPTS_USERNAME | /docker-entrypoint.initdb 中包含的 psql 脚本的用户名 | $POSTGRESQL_USERNAME |
POSTGRESQL_PASSWORD | PostgreSQL 创建用户的密码 | nil |
POSTGRESQL_POSTGRES_PASSWORD | PostgreSQL postgres 用户的密码 | nil |
POSTGRESQL_REPLICATION_PASSWORD | PostgreSQL 复制用户的密码 | nil |
POSTGRESQL_SR_CHECK_PASSWORD | 流复制检查用户的密码 | nil |
POSTGRESQL_INITSCRIPTS_PASSWORD | PostgreSQL 初始化脚本用户的密码 | $POSTGRESQL_PASSWORD |
POSTGRESQL_ENABLE_TLS | 是否为流量启用 TLS | no |
POSTGRESQL_TLS_CERT_FILE | 包含 TLS 流量证书的文件 | nil |
POSTGRESQL_TLS_KEY_FILE | 包含证书密钥的文件 | nil |
POSTGRESQL_TLS_CA_FILE | 包含证书 CA 的文件 | nil |
POSTGRESQL_TLS_CRL_FILE | 包含证书吊销列表的文件 | nil |
POSTGRESQL_TLS_PREFER_SERVER_CIPHERS | 是否使用服务器 TLS 密码套件偏好而非客户端 | yes |
POSTGRESQL_SHARED_PRELOAD_LIBRARIES | PostgreSQL 初始化时预加载的库列表 | pgaudit |
POSTGRESQL_PGAUDIT_LOG | pgaudit 要记录的操作的逗号分隔列表 | nil |
POSTGRESQL_PGAUDIT_LOG_CATALOG | 启用 pgaudit 日志目录(pgaudit.log_catalog 设置) | nil |
POSTGRESQL_PGAUDIT_LOG_PARAMETER | 启用 pgaudit 日志参数(pgaudit.log_parameter 设置) | nil |
POSTGRESQL_LOG_CONNECTIONS | 每个用户连接添加日志条目 | nil |
POSTGRESQL_LOG_DISCONNECTIONS | 每个用户断开连接添加日志条目 | nil |
POSTGRESQL_LOG_HOSTNAME | 访问时记录客户端主机名 | nil |
POSTGRESQL_CLIENT_MIN_MESSAGES | 设置发送到客户端的错误日志级别 | error |
POSTGRESQL_LOG_LINE_PREFIX | 设置日志行的格式 | nil |
POSTGRESQL_LOG_TIMEZONE | 设置日志时区 | nil |
POSTGRESQL_TIMEZONE | 设置时区 | nil |
POSTGRESQL_MAX_CONNECTIONS | 设置最大连接数 | nil |
POSTGRESQL_TCP_KEEPALIVES_IDLE | 设置 TCP 保活空闲时间 | nil |
POSTGRESQL_TCP_KEEPALIVES_INTERVAL | 设置 TCP 保活间隔时间 | nil |
POSTGRESQL_TCP_KEEPALIVES_COUNT | 设置 TCP 保活计数 | nil |
POSTGRESQL_STATEMENT_TIMEOUT | 设置 SQL 语句超时时间 | nil |
POSTGRESQL_PGHBA_REMOVE_FILTERS | 用于删除 pg_hba.conf 行的逗号分隔字符串列表(例如:md5、local) | nil |
POSTGRESQL_USERNAME_CONNECTION_LIMIT | 设置用户连接限制 | nil |
POSTGRESQL_POSTGRES_CONNECTION_LIMIT | 设置 |

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务