PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Conectando-se ao Postgresql em um contêiner docker de fora


Você pode executar o Postgres desta maneira (mapear uma porta):
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres

Então agora você mapeou a porta 5432 do seu contêiner para a porta 5432 do seu servidor. -p <host_port>:<container_port> .Então agora seu postgres está acessível a partir de seu public-server-ip:5432

Para testar:Execute o banco de dados postgres (comando acima)
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
05b3a3471f6f        postgres            "/docker-entrypoint.s"   1 seconds ago       Up 1 seconds        0.0.0.0:5432->5432/tcp    some-postgres

Entre no seu container e crie um banco de dados:
docker exec -it 05b3a3471f6f bash
[email protected]:/# psql -U postgres
postgres-# CREATE DATABASE mytest;
postgres-# \q

Vá para seu localhost (onde você tem alguma ferramenta ou o cliente psql).
psql -h public-ip-server -p 5432 -U postgres

(senha minhasenha secreta)
postgres=# \l

                             List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 mytest    | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres   

Então você está acessando o banco de dados (que está sendo executado no docker em um servidor) do seu localhost.

Neste post é explicado em detalhes.