frodenas/postgresql一个用于PostgreSQL的Docker镜像。
master分支当前包含PostgreSQL 9.6。不同版本的PostgreSQL可在GitHub仓库的分支中找到。
要创建frodenas/postgresql镜像,请在docker-postgresql文件夹中执行以下命令:
docker build -t frodenas/postgresql . docker build -t frodenas/postgresql:9.6 .
要运行镜像并绑定到主机端口5432:
docker run -d --name postgresql -p 5432:5432 frodenas/postgresql
首次运行容器时,会创建一个具有所有权限的pgadmin用户,密码随机生成。要获取密码,请运行以下命令查看容器日志:
docker logs postgresql
您将看到类似以下的输出:
======================================================================== PostgreSQL用户: "pgadmin" PostgreSQL密码: "WH7fwqY7bJCEMYKC" ========================================================================
如果要预设凭据而非随机生成,可以设置以下环境变量:
POSTGRES_USERNAME:设置特定用户名POSTGRES_PASSWORD:设置特定密码示例:预设自定义用户名和密码
$ docker run -d \ --name postgresql \ -p 5432:5432 \ -e POSTGRES_USERNAME=myuser \ -e POSTGRES_PASSWORD=mypassword \ frodenas/postgresql
如果要在容器启动时创建数据库,可以设置以下环境变量:
POSTGRES_DBNAME:创建数据库POSTGRES_EXTENSIONS:为上述数据库创建扩展(仅在指定数据库时生效)示例:预设凭据并创建带扩展的数据库
$ docker run -d \ --name postgresql \ -p 5432:5432 \ -e POSTGRES_USERNAME=myuser \ -e POSTGRES_PASSWORD=mypassword \ -e POSTGRES_DBNAME=mydb \ -e POSTGRES_EXTENSIONS=citext \ frodenas/postgresql
PostgreSQL服务器配置为将数据存储在容器内的/data目录。您可以将容器的/data卷映射到主机卷,使数据独立于运行中的容器:
$ mkdir -p /tmp/postgresql $ docker run -d \ --name postgresql \ -p 5432:5432 \ -v /tmp/postgresql:/data \ frodenas/postgresql
此镜像包含sanity-test命令,可与PostgreSQL服务交互(例如,此镜像的另一个运行中容器)。
$ docker run --entrypoint '' \ -e credentials='{"uri":"postgres://user:pass@host:port/dbname"}' \ frodenas/postgresql sanity-test
您也可以使用sanity-test命令对运行中的容器进行自测试(需指定POSTGRES_DBNAME=name):
docker run -d --name postgresql -p 5432:5432 -e POSTGRES_DBNAME=postgres frodenas/postgresql:9.6 && \ docker exec -ti postgresql sanity-test
输出将以以下内容结束:
未提供$credentials,进入自测试模式。 使用{"hosthame":"localhost","host":"localhost","port":5432,"username":"pgadmin","password":"vD4RhsyRKq9GfAhJ","dbname":"postgres","uri":"postgres://pgadmin:vD4RhsyRKq9GfAhJ@localhost:5432/postgres"}进行PostgreSQL完整性测试 等待postgres://pgadmin:vD4RhsyRKq9GfAhJ@localhost:5432/postgres准备就绪(最多60秒) localhost:5432 - 接受连接 Postgres已就绪 localhost:5432 - 接受连接 + psql postgres://pgadmin:vD4RhsyRKq9GfAhJ@localhost:5432/postgres -c 'DROP TABLE IF EXISTS sanitytest;' 注意:表"sanitytest"不存在,跳过 DROP TABLE + psql postgres://pgadmin:vD4RhsyRKq9GfAhJ@localhost:5432/postgres -c 'CREATE TABLE sanitytest(value text);' CREATE TABLE + psql postgres://pgadmin:vD4RhsyRKq9GfAhJ@localhost:5432/postgres -c 'INSERT INTO sanitytest VALUES ('\''storage-test'\'');' INSERT 0 1 + psql postgres://pgadmin:vD4RhsyRKq9GfAhJ@localhost:5432/postgres -c 'SELECT value FROM sanitytest;' + grep storage-test storage-test
如果您使用BOSH并配置了云配置,可以部署由BOSH管理的持久磁盘卷支持的镜像:
export BOSH_DEPLOYMENT=postgresql bosh2 deploy bosh-postgresql.yml --vars-store creds.yml
要获取随机生成的PostgreSQL用户名、密码和数据库名:
bosh2 int creds.yml --path /postgresql-username bosh2 int creds.yml --path /postgresql-password bosh2 int creds.yml --path /postgresql-dbname
版权所有 (c) 2014 Ferran Rodenas。详情参见LICENSE。

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