Cześć,
próbuję z kontenera docker połączyć się z bazą danych która działa na hoście. System linux. Baza postgresql. .net core api na kontenerze.
Znalazłem taki artykuł, i spodobał mi się sposób w jaki autor sugeruje, żeby to zrobić: https://goonan.io/connecting-to-host-database-from-a-docker-container/
Zgodnie z tym co w artykule moj dokcer compose wygląda tak
services:
app:
build:
context: .
ports:
- 5000:80
volumes:
- /var/run/postgresql/:/var/run/postgresql/
a connection string tak
"connectionString": "Host=/var/run/postgresql;Database=bmw;Username=postgres;Password=password"
Błąd który mam przy próbie połączenia do bazy to
Npgsql.NpgsqlException (0x80004005): Failed to connect to /var/run/postgresql/.s.PGSQL.5432 ---> System.Net.Sockets.SocketException (99): Cannot assign requested address
z tego co szukam i próbuje, to wygląda mi to jakby ten mój socket do postgresa nie działał. Nie wiem jak to sprawdzić czy on działa. Podobno powinien znajdować się w tym katalogu
$ cat /var/run/postgresql/.s.PGSQL.5432
ale cat: /var/run/postgresql/.s.PGSQL.5432: No such device or address
dlatego myśle, że może ten socket nie dziala? Jak to sprawdzić? Gdzie mój socket
Poleceniem sudo psql -d bmw -U postgres mogę się zalogować do bazy na serwerze
Po zalogowaniu do bazy i wykonaniu polecenia show unix_socket_directories zwraca mi /var/run/postgresql
Macie może jakiś pomysł jak to rozwiązać ten problem albo jak inaczej połączyć się do bazy.
Dodam, że to dla środowiska produkcyjnego więc fajnie żeby to było zgodne ze sztuką ;p
Takie mam logi z postgresa, czyli ten plik tam powinien byc.. a go nie ma. Dodalem swojego usera ktorym jestem zalogowany do grupy uzytkownika postgres ale to nic nie zmienilo ja dalej tego pliku nie widze
2023-02-08 2130.967 UTC [182903] LOG: starting PostgreSQL 13.9 (Debian 13.9-0+deb11u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2023-02-08 2130.968 UTC [182903] LOG: listening on IPv6 address "::1", port 5432
2023-02-08 2130.968 UTC [182903] LOG: listening on IPv4 address "127.0.0.1", port 5432
2023-02-08 2130.970 UTC [182903] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2023-02-08 2130.975 UTC [182905] LOG: database system was shut down at 2023-02-08 2130 UTC ????? mhh
2023-02-08 2130.981 UTC [182903] LOG: database system is ready to accept connections
Łącząc się w ten sposób psql -h /var/run/postgresql/.s.PGSQL.5432 -U postgres
mam błąd psql: error: could not connect to server: Not a directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432/.s.PGSQL.5432"?
ale tak dziala
psql -h /var/run/postgresql -U postgres
wg konfiguracji /etc/postgresql/10/main/postgresql.conf powinno byc dobrze raczej wszystko. To moze cos z tym moim uzytkonikiem na ktorym jestem zalogowany jest nie tak? Ale patrzylem i mam do tego katalogu co jest ten plik dostep
Albo cos z serwerem bazy jest zrabane i nie dziala