2016-06-08 23 views
43

Bir docker kabında bir sunucuda Postgresql var. Dışarıdan, yani yerel bilgisayarımdan nasıl bağlayabilirim? Buna izin vermek için hangi ayarı uygulamalıyım?Dışarıdan bir docker kapsayıcısında Postgresql'e bağlanma

+0

postresql'yi başlatmak için hangi komutu kullandınız? Bir portu açığa çıkarabilir ve – lvthillo

+1

@ lorenzvth7 ile nasıl haritalandırabilirsiniz? – Sojo

cevap

100

Sen PostgreS bu şekilde (bir bağlantı noktası harita) çalıştırabilirsiniz:

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

Şimdi sizin sunucunun port 5432 için konteyner limanı 5432 haritalandırdık. çalıştırın postgres veritabanı (yukarıdaki komut)

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 
senin kabın içine

Git ve bir veritabanı oluşturmak:

docker exec -it 05b3a3471f6f bash 
[email protected]:/# psql -U postgres 
postgres-# CREATE DATABASE mytest; 
postgres-# \q 
-p <host_port>:<container_port> .Peki şimdi postgres testi için sizin public-server-ip:5432

erişilebilir

Yerel anasisteme gidin (bazı araçlarınız veya psql istemciniz var).

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

(şifre 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 

Yani localhost'tan veritabanı (ki bir sunucuda docker çalışan) erişen ediyoruz.

+7

Burada "-h localhost" özledim. Teşekkür ederim! –

+0

Bağlantı noktası benim için çalıştı –

+1

bu localhost için çalışmıyor – Tjorriemorrie

8

Zaten ana makinede postgres çalışan vardı ve ağdan bağlantılara izin vermek istemiyordu, bu yüzden kap içinde geçici PostgreS örneğini çalıştırıp sadece iki satır veritabanını oluşturulan vermedi: Ayrıca can

# 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

Ayrıca docker exec komutu ile erişim.

$ docker exec -it postgres-container bash 

# su postgres 

$ psql 
İlgili konular