Wpis z mikrobloga

Jest na vps strona + baza danych w #postgresql w jednym kontenerze #docker.
Moim zadaniem jest utworzyć skrypt który codziennie bedzie pobierał rekordy z tej bazy i wysyłał je do api.
Tutaj sobie wszystko ogarnę, ale zastanawiam się w jaki sposób najlepiej połączyć do bazy danych. Jest wyexposowany port 5432.
Jak najlepiej się połączyć do bazy tworząc nowy container z narzędziem napisanym w #python?

#programowanie
  • 5
  • Odpowiedz
@Spofity: najmniej pieprzenia to ubranie wszystkiego w docker-compose - API w jakimś fast api / flasku z connectorem do bazy jako część compose to nie jest problem. W sumie bez compose też powinno zadziałać jeśli faktycznie port jest wystawiony. Zależy od potrzeb - np czy połączenie z bazą ma być tylko w sieci dockerowej itp
  • Odpowiedz
@Spofity: ale jaki ty w ogóle chcesz rozwiązać problem? Jeżeli masz już apkę która potrafi gadać z tą bazą, to dopisz tam commanda czy jakkolwiek się to w twoim frameworku nie nazywa i wstaw go do crona.

A jeżeli już z jakiegoś powodu musi być w osobnym kontenerze, to zadaj sobie pytanie na jakim poziomie abstrakcji chcesz pracować z tą bazą. No i w zależności co zdecydujesz, albo jakiś ORM, albo
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@Arogancky: dokładnie, połączenie z bazą tylko w sieci dockerowej. API już mam wystawione w drf, skrypt też napiszę szybko bo wiem czego potrzebuje.
Po prostu nie wiem jak rozwiązać połączenie z bazą w skrypcie. Wystarczy że polacze się przez psycopg2 tymi samymi danymi co łączy się strona?
Tzn czy tworząc nowy kontener z tym skryptem od razu będę w tej samej dockerowej sieci co baza danych?
  • Odpowiedz
@Spofity: kurde, nie pamiętam czy nie musisz manualnie zrobić sieci. Jeśli sobie zrobisz docker-compose to on Ci ogarnie takie detale no i mniej poleceń używasz do odpalenia :) i tak, psycopg ogarnie temat, podajesz mu w linku bodajże nazwę serwisu + port i powinno hulać. A jeśli chcesz robić naokoło bez compose to pamiętaj że z każdego kontenera musisz umieć pingować inny. No i polecam *docker inspect* żeby oglądać konfiguracje sieci
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@Spofity: @Arogancky:

Albo wystawiasz port z Dokera i po prostu się łączysz się obok (po prostu drugi kontener obok stawiasz).

Albo łączysz się w sieci Dockerowej. I tutaj dwie opcje. Albo Docker Compose, który ogarnie sieci. Albo stawiasz obok drugi kontener i ręcznie tworzysz sieć dockerową.

Teoretycznie drugie rozwiązanie lepsze, bo port bazy nie jest wystawiony na zewnątrz, więc większe bezpieczeństwo. Ale na początek polecam pierwsze, bo łatwiejsze.
  • Odpowiedz