
tozd/postgresql<[***]>
可用镜像地址:
tozd/postgresqlregistry.gitlab.com/tozd/docker/postgresqltozd/base ← tozd/dinit ← tozd/postgresql
9.3: PostgreSQL 9.39.4: PostgreSQL 9.49.5: PostgreSQL 9.59.6: PostgreSQL 9.610: PostgreSQL 1011: PostgreSQL 1112: PostgreSQL 1213: PostgreSQL 1314: PostgreSQL 1415: PostgreSQL 1516: PostgreSQL 1617: PostgreSQL 17/var/log/postgresql: 当LOG_TO_STDOUT未设置为1时,日志文件存储路径。/var/lib/postgresql: 持久化此数据卷以避免数据丢失。首次启动时可选初始化配置:
PGSQL_ROLE_1_USERNAME: 要创建的用户用户名。PGSQL_ROLE_1_PASSWORD: 创建用户的密码。PGSQL_ROLE_1_FLAGS: 用户创建时的标志,默认值为LOGIN。PGSQL_DB_1_NAME: 要创建的数据库名称。PGSQL_DB_1_OWNER: 数据库所有者的用户名,创建数据库时必须设置。PGSQL_DB_1_ENCODING: 数据库编码,默认值为UNICODE。PGSQL_DB_1_LC_COLLATE: 数据库排序规则,默认值为空。PGSQL_DB_1_LC_CTYPE: 数据库字符分类,默认值为空。PGSQL_DB_1_TEMPLATE: 创建新数据库的模板名称,默认值为DEFAULT。PGSQL_DB_1_POSTGIS: 若设置,将在数据库中安装PostGIS。其他环境变量:
LOG_TO_STDOUT: 若设置为1,日志输出到标准输出(可通过docker logs查看),而非日志数据卷。5432/tcp: PostgreSQL监听端口。提供PostgreSQL SQL服务器的Docker镜像,不同标签对应不同PostgreSQL版本。需挂载数据卷/var/lib/postgresql以避免容器重建时数据丢失,若数据卷为空,镜像将在首次启动时初始化。
扩展此镜像时,可添加脚本/etc/service/postgresql/run.initialization,该脚本将在容器启动时、初始化完成后、PostgreSQL守护进程运行前执行。
当LOG_TO_STDOUT设置为1时,镜像日志输出到标准输出和标准错误流,所有标准输出为JSON格式。
本镜像支持两种使用方式:多服务共享的数据库(需手动创建用户和数据库),或单用户/应用专用数据库(通过环境变量自动初始化)。
首次运行后,可从容器内部以管理员身份连接PostgreSQL(假设容器名为postgresql):
bash$ docker exec -t -i postgresql /bin/bash $ psql -U postgres postgres
创建用户:
bash$ createuser -U postgres -DRS -PE <用户名>
创建数据库:
bash$ createdb -U postgres -O <用户名> <数据库名>
安装PostGIS扩展(连接数据库后执行):
sql> CREATE EXTENSION postgis;
从容器外部备份数据库:
bash$ docker exec postgresql pg_dump -Fc -U postgres <数据库名> > /var/backups/<数据库名>.pgdump
从容器外部恢复数据库:
bash$ cat /var/backups/<数据库名>.pgdump | docker exec -i postgresql pg_restore -Fc -U postgres -d <数据库名>
首次启动初始化数据卷时,可通过环境变量自动创建用户和数据库。例如,启动容器时指定以下变量:
bashdocker run -d \ --name postgres-single \ -p 5432:5432 \ -v postgres-data:/var/lib/postgresql \ -e PGSQL_ROLE_1_USERNAME=appuser \ -e PGSQL_ROLE_1_PASSWORD=apppass \ -e PGSQL_DB_1_NAME=appdb \ -e PGSQL_DB_1_OWNER=appuser \ tozd/postgresql:16
yamlversion: '3' services: postgresql: image: tozd/postgresql:16 ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql - postgres_logs:/var/log/postgresql environment: - LOG_TO_STDOUT=1 - PGSQL_ROLE_1_USERNAME=admin - PGSQL_ROLE_1_PASSWORD=securepass - PGSQL_DB_1_NAME=maindb - PGSQL_DB_1_OWNER=admin volumes: postgres_data: postgres_logs:
项目提供只读GitHub镜像,方便在GitHub上 fork 项目。

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