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?
@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
@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
@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?
@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
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.
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
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
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?
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.