docker postgres pgadmin本地连接

问题描述 投票:49回答:7

我用nginx,php和postgres创建了一个ubuntu图像。

我想将当前图像中的postgres数据库与位于我本地计算机上的pgadmin连接起来。

我尝试使用docker inspector尝试使用image ip与我的本地pgadmin建立连接,但没有太大成功。我也尝试在本地配置一些端口以使连接工作。

postgresql docker pgadmin
7个回答
66
投票

这是一个有效的问题,不知道为什么人们会觉得“似乎无法回答这个问题”。

所以,这就是我如何做你想做的事情:

  1. 从Docker Hub中拉出postgres图像 docker pull postgres:latest
  2. 使用以下命令运行容器 docker run -p 5432:5432 postgres
  3. 使用docker的inspect命令查找IP
  4. 使用该IP,PORT,用户名和密码在PGADMIN中连接
  5. 你也可以像下面这样做一个简单的telnet来确认你是否可以访问docker postgres容器: telnet IP_ADDRESS 5432

39
投票

我在windows 10运行docker for windows 1.12.6(9655)上取得的成功,步骤如下:

  1. 拉最新的postgres docker pull postgres:latest
  2. 运行postgres容器: qazxsw poi
  3. 然后从docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres安装了最新版本的pgAdmin4
  4. 运行pgAdmin 4创建新服务器,并输入如下主机:127.0.0.1端口:5432用户名:用户密码:password123
  5. 然后一切正常,连接到docker postgres实例成功。

19
投票

或者,您可以将Postgres和Pgadmin组合在一个pgadmin website文件中,并以用户docker-compose,pwd:[email protected]身份登录。要添加Posgres服务器,请使用hostname admin,port postgres

5432

10
投票

如果打算在同一个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容器可见。


7
投票

这就是我所做的

for postgres

--link some-postgres

for pgadmin

docker run -p 5432:5432  --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres

Connection string for pgadmin

docker run -p 5050:80  -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=admin"  -d dpage/pgadmin4

它工作正常!!!!!


4
投票

您必须将容器中的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地址。


0
投票

我尝试并为我工作的解决方案是创建一个docker compose文件,其中包括postgress和pgadmin作为服务。有关更多详细信息:docker ps


0
投票

我将它包含在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

© www.soinside.com 2019 - 2024. All rights reserved.