Docker 搭建 Postgres + pgAdmin 环境

用户头像
姜雨生
关注
发布于: 2020 年 06 月 02 日
Docker 搭建 Postgres + pgAdmin 环境

本文将介绍,通过Docker 来快速搭建postgres 和 pgAdmin 环境,快速使用postgres,免去很多配置内容。

准备工作:

  • 良好的网络环境(这个很重要)

  • 已经安装好docker,并正常运行的电脑,如果需要安装docker,请看这里

  • 如果你的电脑不能科学上网,下载镜像速度过慢,可以把镜像源修改成国内源,上面的连接里也有提及。



脚本执行:

Postgres:

docker run -d \
    --name postgres \
    -e POSTGRES_PASSWORD={pwd} \
    -v {current_address}:{container_address} \
    -p 5432:5432 \
    postgres

必要参数:

  • POSTGRES_PASSWORD: 通过环境变量为数据库设置默认密码,这里写一个自己认为安全的就好。

  • current_address / container_address: docker里面,对于存储是隔离的,如果容器一旦挂掉,会导致文件消失,所以最好挂在一个路径进去,这里第一个参数是当前系统的路径,后面的路径是postgres在容器内,默认的存储路径,通常是/var/lib/postgresql/data

其他参数:

请访问 postgres 镜像提供网站查看。

pgAdmin:

docker run -p 80:80 \
    --name pgadmin
    -e 'PGADMIN_DEFAULT_EMAIL= {Email_Account}' \
    -e 'PGADMIN_DEFAULT_PASSWORD={pwd}’ \
    -d dpage/pgadmin4

必要参数:

  • PGADMIN_DEFAULT_EMAIL:登录的账号

  • PGADMIN_DEFAULT_PASSWORD:登录的密码

其他参数:

请访问 pgadmin 镜像提供网站查看。



检查

docker ps 之后,查看一下:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d213680266b0 dpage/pgadmin4 "/entrypoint.sh" 10 days ago Up 10 days 0.0.0.0:80->80/tcp, 443/tcp pgadmin
a7428eded0a5 postgres "docker-entrypoint.s…" 2 weeks ago Up 10 days 0.0.0.0:5432->5432/tcp postgres

如果不是两个结果,执行以下docker ps -a 查看一下哪个失败了,然后通过 docker logs {CONTAINER ID} 查看一下错误的日志,我认为你可能出错的原因:

  • 端口占用,这里使用了80端口和5432端口,如果其中的被占用,先用 docker rm -f {CONTAINER ID} 清除失败的容器内容,然后修改上面脚本的端口号,在执行一下即可。

  • Volumn 挂在问题,通常可能是文件夹的权限或者路径问题,检查你挂在的路径是否能够正常访问,其权限是否被操作为只读等等。

  • docker image 下载失败,网络问题不能保证,多试几次把。



pgAdmin 配置

新建一个服务,输入名字,然后配置Connection 页面:



这里面的 Host name/address 需要注意一下,由于Docker 使用的是桥接模式,与普通的安装相比较,就不能直接使用localhost 的方式直接连接了,具体的内容参见官方文档,这里需要通过 docker inspect postgres 命令查看一下你的network 地址是多少( postgres 是执行脚本里面给数据库的命名,如果你不是这个名字,请换成对应的 container name 或者 container id):

"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "397de9a77a910df944cbd73b19f2359a9090b76619c78d97507f5cd468ad00ff",
"EndpointID": "524c084f5957ecb586e85812177f84672b0d2dfd7236907c19c8b59ed1f54f00",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}


这里我的IPAddress 172.17.0.2, 所以上面的就输入这个IP就好,其他的内容根据自己的实际情况填写即可。



发布于: 2020 年 06 月 02 日 阅读数: 114
用户头像

姜雨生

关注

还未添加个人签名 2018.07.23 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
谢谢雨生 支持,继续加油。
2020 年 06 月 03 日 14:11
回复
没有更多了
Docker 搭建 Postgres + pgAdmin 环境