Rig*_*xls 61 postgresql pgadmin docker
我用nginx,php和postgres创建了一个ubuntu图像.
我想将当前图像中的postgres数据库连接到pgadmin
本地计算机上.
我尝试使用docker inspector尝试使用image ip与我的本地pgadmin建立连接,但没有太大成功.我也尝试在本地配置一些端口以使连接工作.
小智 71
这是一个有效的问题,不知道为什么人们会觉得"似乎无法回答这个问题".
所以,这就是我如何做你想做的事情:
从Docker Hub中拉出postgres图像
docker pull postgres:latest
使用以下命令运行容器
docker run -p 5432:5432 postgres
使用docker的inspect命令查找IP
使用该IP,PORT,用户名和密码在PGADMIN中连接
你也可以像下面这样做一个简单的telnet来确认你是否可以访问docker postgres容器:
telnet IP_ADDRESS 5432
Mao*_*ang 40
我在windows 10运行docker for windows 1.12.6(9655)上取得的成功,步骤如下:
拉最新的postgres
docker pull postgres:latest
运行postgres包含器:
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
然后从pgadmin网站安装了最新版本的pgAdmin4
运行pgAdmin 4创建新服务器,并输入如下主机:127.0.0.1端口:5432用户名:用户密码:password123
Sol*_*ake 26
就我而言,我可以通过命令解决检查我的 postgre 图像的问题
docker inspect CONTAINER_ID | grep IPAddress.
Run Code Online (Sandbox Code Playgroud)
所以,我使用 docker ip 地址来配置我的 pgadmin 4 连接,一切都很好。感谢@Afshin Ghazi
Eri*_*ngs 25
或者,您可以将Postgres和Pgadmin组合在一个docker-compose
文件中,然后以用户身份登录pgadmin4@pgadmin.org
,pwd : admin
. 要添加Posgres服务器,请使用hostname postgres
,port 5432
.
version: '3'
services:
postgres:
image: postgres
hostname: postgres
ports:
- "6543:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: TEST_SM
volumes:
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4
depends_on:
- postgres
ports:
- "5555:80"
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
restart: unless-stopped
volumes:
postgres-data:
Run Code Online (Sandbox Code Playgroud)
KAR*_*LAN 22
如果您确认 PostgreSQL 正在运行,并且您可以使用 PgAdmin 的本地副本连接到那里...
答案很简单:对运行在 Docker 中的 PgAdmin使用host.docker.internal
istead oflocalhost
Afs*_*azi 16
我将其包含在 docker yaml 文件中以获取数据库和 pgAdmin:
database:
image: postgres:10.4-alpine
container_name: kafka-nodejs-example-database
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
expose:
- "5432"
ports:
- 8000:5432
volumes:
- ./services/database/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql
- ./services/database/seed.sql:/docker-entrypoint-initdb.d/2-seed.sql
pgadmin:
image: dpage/pgadmin4
ports:
- 5454:5454/tcp
environment:
- PGADMIN_DEFAULT_EMAIL=admin@mydomain.com
- PGADMIN_DEFAULT_PASSWORD=postgres
- PGADMIN_LISTEN_PORT=5454
Run Code Online (Sandbox Code Playgroud)
postgres 用户名是 alphaone,密码是 xxxxxxxxxxx。
做一个docker ps
来获取容器ID,然后docker inspect <dockerContainerId> | grep IPAddress
例如: docker inspect 2f50fabe8a87 | grep IPAddress
将 IP 地址插入 pgAdmin 和 docker 中使用的数据库凭据:
Ale*_*kov 11
如果pgAdmin打算在同一Ubuntu主机/ guest上运行,则需要链接postgres容器,因此可以用名称来解决。
1.运行一个postgres容器:
docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres
Run Code Online (Sandbox Code Playgroud)
2.运行pgAdmin容器:
docker run -p 80:80 --link some-postgres -e "PGADMIN_DEFAULT_EMAIL=email@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
Run Code Online (Sandbox Code Playgroud)
3.现在,在phAdmin Web应用程序中添加新服务器时,请some-postgres
用作服务器名称
请注意--link some-postgres
何时启动pgAdmin。该命令使pgAdmin容器对postgres容器可见。
This is what i did
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
Run Code Online (Sandbox Code Playgroud)
docker run -p 5050:80 -e "PGADMIN_DEFAULT_EMAIL=name@example.com" -e "PGADMIN_DEFAULT_PASSWORD=admin" -d dpage/pgadmin4
Run Code Online (Sandbox Code Playgroud)
host: host.docker.internal
database: postgres
user: postgres
password: admin
Run Code Online (Sandbox Code Playgroud)
It works fine!!!!!
小智 8
面对这个问题两天后,我能够解决这个问题。
这个问题的解决方案已经得到了人们的回答,比如 do inspect
docker inspect CONTAINER_ID
但是在运行这个命令时,我得到了很多日志,比如Host Config Config Network Settings等,所以我对在pgAdmin连接中添加哪个 IPAddress 感到困惑,因为我尝试了0.0.0.0和 config、host、networkSettings 不同的 -2 IPAddress 在日志,但最终它在尝试了很多之后有效。
它适用于哪个 IP,我们必须添加该网络 IP 地址(我们创建该地址以连接postgres和pgAdmin。)
就像我跑步时的情况一样:-
码头工人检查 postgres_container
"NetworkSettings": {
"Bridge": "",
"SandboxID": "sdffsffsfsfsfsf123232e2r3pru3ouoyoyuosyvo8769696796",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5432/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5432"
}
]
},
"SandboxKey": "/var/run/docker/231231Ad132",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"postgres": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"postgres",
"0e2j3bn2m42"
],
"NetworkID": "35rhlhl3l53l5hlh3523233k3k4k22l3hk2k4",
"EndpointID":"b3424n43k52o2i4n235k1k4l2l4hj234f14n2",
"Gateway": "192.168.16.1",
"IPAddress": "192.168.16.2",
"IPPrefixLen": 20,
"IPv6Gateway": "",
Run Code Online (Sandbox Code Playgroud)
所以我们必须添加 NetworkSettings -> Network -> Postgres(mine created network) -> IPAddress ie "IPAddress": "192.168.16.2"。
添加此IP后,它将起作用。
我希望它会有所帮助。
这在 Ubuntu 18 上对我有用:
1- 运行一个 postgres 容器
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name my-postgres -p 5432:5432 postgres
Run Code Online (Sandbox Code Playgroud)
2- 运行 pgAdmin 容器
docker run --rm -p 5050:5050 thajeztah/pgadmin4
Run Code Online (Sandbox Code Playgroud)
3- 获取您的本地 IP(在 Ubuntu 中通过ifconfig
命令)
4-在浏览器中打开localhost:5050
5- 单击服务器>>创建>>服务器...
6- 在常规选项卡中,为其命名,例如:docker。在连接选项卡中,输入以下字段:
主机名:来自 3 的 IP
用户名:用户
密码:password123
7- 单击保存,现在一切正常。
注意:如果这不起作用,请尝试使用“localhost”作为主机名。
如果您使用的是 Mac 和 localhost,请使用以下凭据:
version: '3.5'
services:
postgres:
container_name: postgres_container
image: postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
PGDATA: /data/postgres
volumes:
- postgres:/data/postgres
ports:
- "5432:5432"
networks:
- postgres
restart: unless-stopped
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
PGADMIN_CONFIG_SERVER_MODE: 'False'
volumes:
- pgadmin:/var/lib/pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- postgres
restart: unless-stopped
networks:
postgres:
driver: bridge
volumes:
postgres:
pgadmin:
Run Code Online (Sandbox Code Playgroud)
联系:
主机名/地址:host.docker.internal
或0.0.0.0
港口:5432
用户名:postgres
数据库:postgres
密码:changeme
为了或查找容器的 IP,请使用以下命令
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
Run Code Online (Sandbox Code Playgroud)
您必须将容器中的 postgres 端口公开给本地系统。您可以通过像这样运行容器来完成此操作:
docker run -p 5432:5432 <name/id of container>
当与 GUI 客户端或 CLI 连接时,请确保使用 ip 地址而不是 localhost,即使您的 ip 地址是 localhost ip 地址。
docker ps
会给你 postgres 容器所在的 IP 地址。
就我而言,我有一个 PostgreSQL 容器,所以我没有更改我的容器或创建 docker-compose 方法,几个月后我需要 pgadming 安装 PostgreSQL,所以这是我的方法:
docker inspect my_container_id_postgreSQL
分配给 PostgreSQL 的网络是:
"网络": { "docker_default": { "IPAddress": "172.18.0.2", ... } }
用--network
命令运行我的 PGADMIN 。
docker run -p 85:80 --network docker_default -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' -d dpage/pgadmin4
将 IP 地址插入 pgAdmin 和 docker 中使用的数据库凭据。
我希望这对某人有用。问候。
当您启动容器时,您就有了它的网络别名。只需在 pgadmin UI 中使用此别名即可。就像如果您有以下 docker compose 配置:
version: "3.5"
services:
postgres:
container_name: postgres-14
image: postgres:14.1
restart: unless-stopped
ports:
- "5432:5432"
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
- POSTGRES_PASSWORD=root
- POSTGRES_USER=postgres
hostname: postgres
pgadmin:
container_name: pgadmin4
image: dpage/pgadmin4
restart: unless-stopped
ports:
- "80:80"
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
- PGADMIN_DEFAULT_EMAIL=user@domain.com
- PGADMIN_DEFAULT_PASSWORD=admin
hostname: pgadmin
Run Code Online (Sandbox Code Playgroud)
您可以使用主机名添加服务器:postgres
归档时间: |
|
查看次数: |
56127 次 |
最近记录: |