2016-06-08 18 views
43

Mam PostgreSQL na serwerze w kontenerze dokowania. Jak mogę połączyć się z nią z zewnątrz, czyli z mojego lokalnego komputera? Jakie ustawienie powinienem zastosować, aby to umożliwić?Łączenie z PostgreSQL w kontenerze dokowania z zewnątrz

+0

jakiego polecenia użyłeś do uruchomienia postresql? jesteś w stanie odsłaniać port i mapować go na – lvthillo

+1

@ lorenzvth7, jak? – Sojo

Odpowiedz

100

PostgreSQL można uruchomić w ten sposób (mapa port):

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres 

Więc teraz masz odwzorowane port 5432 z kontenera do portu 5432 na serwerze. -p <host_port>:<container_port> .so teraz Twoje postgres jest dostępne z public-server-ip:5432

przetestować: Run bazy danych PostgreSQL (komend powyżej)

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 

Go wewnątrz pojemnika i tworzenia bazy danych:

docker exec -it 05b3a3471f6f bash 
[email protected]:/# psql -U postgres 
postgres-# CREATE DATABASE mytest; 
postgres-# \q 

Przejdź do lokalnego hosta (gdzie masz jakieś narzędzie lub klienta psql).

psql -h public-ip-server -p 5432 -U postgres 

(hasło mysecretpassword)

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 

Więc dostępu do bazy danych (który pracuje w dokowanym na serwerze) z Twojego localhost.

+7

Brakowało mi "-h localhost" tutaj. Dziękuję Ci! –

+0

Ustawienie portu zadziałało dla mnie –

+1

to nie działa dla localhosta – Tjorriemorrie

8

miałem już uruchomiony postgres na maszynie hosta i nie chce, aby umożliwić połączenia z siecią, więc nie uruchomić tymczasowy Postgres instancji w kontenerze i stworzył bazę danych w ciągu zaledwie dwóch linii:

# Run PostgreSQL 
docker run --name postgres-container -e POSTGRES_PASSWORD=password -it -p 5433:5432 postgres 

# Create database 
docker exec -it postgres-container createdb -U postgres my-db 
1

można również dostęp także za pomocą polecenia execer exec.

$ docker exec -it postgres-container bash 

# su postgres 

$ psql 
Powiązane problemy