docker postgres pgadmin local connection

2019-01-30 18:13发布

I have created an ubuntu image with nginx, php and postgres.

I want to connect the postgres database in my current image with pgadmin located on my local machine.

I have tried using docker inspector to try to use the image ip to make a connection with my local pgadmin but without much success. I've also tried configuring some ports on local to make connection work.

6条回答
手持菜刀,她持情操
2楼-- · 2019-01-30 18:36

It's a valid question don't know why people feel "doesn't seem possible to answer that question".

So, here's how I do what you are trying to do:

  1. Pull postgres image from Docker Hub

    docker pull postgres:latest

  2. Run the container using the below command

    docker run -p 5432:5432 postgres

  3. Using docker's inspect command find the IP

  4. Use that IP, PORT, Username, and Password to connect in PGADMIN

  5. You can also do a simple telnet like below to confirm if you can access docker postgres container:

    telnet IP_ADDRESS 5432

查看更多
放荡不羁爱自由
3楼-- · 2019-01-30 18:42

what I have done success on windows 10 running docker for windows 1.12.6(9655), the step is like below:

  1. Pull the latest postgres

    docker pull postgres:latest

  2. run the postgres containner

    docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres

  3. Then installed the latest version of pgAdmin4 from pgadmin website

  4. Run pgAdmin 4 create new server, and input as following Host: 127.0.0.1 Port: 5432 User name: user password: password123

  5. Then everything is ok, connect to docker postgres instance success.
查看更多
时光不老,我们不散
4楼-- · 2019-01-30 18:46

Alternatively, you could combine Postgres and Pgadmin in one docker-compose file, and login as user pgadmin4@pgadmin.org, pwd: admin. To add the Posgres server, use 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:
查看更多
孤傲高冷的网名
5楼-- · 2019-01-30 18:59

You have to expose the postgres port in the container to you local system. You do this by running your container like this:

docker run -p 5432:5432 <name/id of container>

when connecting with your GUI client or CLI make sure to use the ip-address not localhost even if your ip-address is the localhost ip-address.

docker ps would give you the ip address your postgres container is on.

查看更多
够拽才男人
6楼-- · 2019-01-30 18:59

The solution I tried and worked for me, was to create a docker compose file where I included postgress and pgadmin as services. For more details: Connecting pgadmin to postgres in docker

查看更多
爷、活的狠高调
7楼-- · 2019-01-30 19:01

If pgAdmin is intended to be run wihtin same Ubuntu host/guest, then you need to link postgres container, so it could be resolved by a name.

1. Run a postgres container:

docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres

2. Run pgAdmin container:

docker run -p 80:80 --link some-postgres -e "PGADMIN_DEFAULT_EMAIL=email@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4

3. Now when adding new server in phAdmin web app, use some-postgres as server name

Note the --link some-postgres when we were bringing up the pgAdmin. This command makes postgres container visible to pgAdmin container.

查看更多
登录 后发表回答