我用nginx,php和postgres创建了一个ubuntu图像。
我想将当前图像中的postgres数据库与位于我本地计算机上的pgadmin
连接起来。
我尝试使用docker inspector尝试使用image ip与我的本地pgadmin建立连接,但没有太大成功。我也尝试在本地配置一些端口以使连接工作。
这是一个有效的问题,不知道为什么人们会觉得“似乎无法回答这个问题”。
所以,这就是我如何做你想做的事情:
docker pull postgres:latest
docker run -p 5432:5432 postgres
telnet IP_ADDRESS 5432
我在windows 10运行docker for windows 1.12.6(9655)上取得的成功,步骤如下:
docker pull postgres:latest
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
安装了最新版本的pgAdmin4或者,您可以将Postgres和Pgadmin组合在一个pgadmin website文件中,并以用户docker-compose
,pwd:[email protected]
身份登录。要添加Posgres服务器,请使用hostname admin
,port postgres
。
5432
如果打算在同一个Ubuntu主机/来宾中运行pgAdmin,那么你需要链接postgres容器,因此可以通过名称解析它。
1.运行postgres容器:
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: [email protected]
PGADMIN_DEFAULT_PASSWORD: admin
restart: unless-stopped
volumes:
postgres-data:
2.运行pgAdmin容器:
docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres
3.现在,在phAdmin web app中添加新服务器时,请使用docker run -p 80:80 --link some-postgres -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
作为服务器名称
当我们提出pgAdmin时,请注意some-postgres
。此命令使postgres容器对pgAdmin容器可见。
这就是我所做的
--link some-postgres
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
docker run -p 5050:80 -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=admin" -d dpage/pgadmin4
它工作正常!!!!!
您必须将容器中的postgres端口暴露给本地系统。你通过这样运行你的容器来做到这一点:
host: host.docker.internal
database: postgres
user: postgres
password: admin
当您使用GUI客户端或CLI连接时,请确保使用ip-address而不是localhost,即使您的ip-address是localhost ip-address也是如此。
docker run -p 5432:5432 <name/id of container>
会给你postgres容器所在的IP地址。
我尝试并为我工作的解决方案是创建一个docker compose文件,其中包括postgress和pgadmin作为服务。有关更多详细信息:docker ps
我将它包含在docker yaml文件中以获取数据库和pgAdmin:
Connecting pgadmin to postgres in docker
postgres用户名是alphaone,密码是xxxxxxxxxxx。
做一个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:
- [email protected]
- PGADMIN_DEFAULT_PASSWORD=postgres
- PGADMIN_LISTEN_PORT=5454
获取容器ID然后docker ps
例如:docker inspect <dockerContainerId> | grep IPAddress
将Ip地址插入pgAdmin和docker中使用的数据库凭据:
docker inspect 2f50fabe8a87 | grep IPAddress