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
Odpowiedz
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.
Brakowało mi "-h localhost" tutaj. Dziękuję Ci! –
Ustawienie portu zadziałało dla mnie –
to nie działa dla localhosta – Tjorriemorrie
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
można również dostęp także za pomocą polecenia execer exec.
$ docker exec -it postgres-container bash
# su postgres
$ psql
jakiego polecenia użyłeś do uruchomienia postresql? jesteś w stanie odsłaniać port i mapować go na – lvthillo
@ lorenzvth7, jak? – Sojo