Docker compose - dostęp do drugiego konteneru z pierwszego konteneru

0

Mam dwa kontenery: postgres i apkę javową.

Lokalnie działa to tak:
Apka javowa uruchamia w runtime komendy postgresowe z poziomu javy (dla uproszczenia: postgres -V). Lokalnie działa, bo mam na hoście zainstalowaną i javę i postgresa więc ok.

Ale przy dockerze nie działa - kontener javowy nie ma dostepu do komendy postgres.

Czy tutaj najlepsze rozwiązanie to złączenie tego w jeden container?

2

Wydaje mi się, że można zwyczajnie podczas tworzenia kontenera z aplikacją doinstalować paczkę i powinno działać (przykład dla alpine, u siebie musisz dostosować menadżer pakietów z obrazu bazowego):

RUN apk add --no-cache paczka_z_cli_postgres
1

Druga opcja to wystaw w kontenerze z Postgresem proste API proxy'ujące polecenia, które chcesz zdalnie wykonać.

0

Ale o co chodzi?
Czy twoja Javowa apka to taki jakby manager bazy danych (restart, backup)? Jeżeli tak to co ona robi w innym kontenerze?
Opcja alternatywna to zamiast wołać prostgress'a lepiej użyć ich klienta i wysyłać polecenia do bazy z kodu.

1

Też do końca nie rozumiem problemu, ale wygląda na to, że po prostu w kontenerze aplikacji musisz doinstalować klienta Postgresa - jak instalujesz postgressa to klient tam jest w zależnościach, ale jako że kontener z aplikacją nie ma bazy danych to nie ma i domyślnie klienta. Zapewne jak w dockerfile dodasz instalację klienta to zadziała. Jak to zrobić to już zależy od menadżera pakietów jakiego używa kontener (czyli np. apk jeśli to Alpine, apt jeśli Debian/Ubuntu) + jak w danym systemie nazywa się paczka z klientem cli Postgresa.

0

Dokładnie tak - w kliencie postgresa jest opcja -h <host> dzięki czemu mogę się łączyć z remote serwerem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1