Dlaczego NIE mogę połączyć się z hostem lokalnym:5432?
Cat /etc/hosts
kontenera
$ sudo docker exec -it [container] cat /etc/hosts
W przypadku sieci Docker jest bridge
domyślnie localhost
Wewnątrz wskazuje na sam kontener (domyślna sieć mostka Dockera
).W takim razie nie masz 5432
słuchanie w Twoim kontenerze:
$ sudo docker exec [container] nc -v -z localhost 5432
Rozwiązanie 1. Jeśli chcesz na stałe zakodować „localhost:5432” w pliku xml konfiguracji, najłatwiejszym sposobem jest utworzenie kontenera z opcją „--net=host”:
$ sudo docker run --net=host -it ...
Rozwiązanie 2. Zmień
localhost
adresu IP hosta dockera w kontenerze- Uzyskaj adres IP hosta platformy Docker :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1
- Wprowadź swój kontener:
$ sudo docker exec -it [container] /bin/bash
- Edytuj plik
/etc/hosts
aby wskazać hostowi lokalnemu adres IP hosta dockera :$ sudo vim /etc/hosts 192.168.5.1 localhost
Rozwiązanie 3. Zmodyfikuj plik konfiguracyjny db, aby używał aliasu zamiast localhost
:
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Następnie dodaj DB_ALIAS
do hostów kontenera :$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...