5

Niedawno wdrożyłem aplikację internetową Django na Elastic Beanstalk. Skonfigurowałem go tak, aby uzyskać dostęp do interfejsu administratora Django przez Internet i dodawać zawartość do strony internetowej.Synchronizowanie lokalnej i elastycznej bazy danych Beanstalk?

Strona jest wciąż w fazie rozwoju - będę siekać, zmieniać i wprowadzać poprawki itp. Niestety, za każdym razem, gdy wdrażam aplikację z wersji lokalnej, baza danych (SQLite) jest nadpisywana i wszelkie dodane treści w wersji online jest usuwany.

Czy istnieje sposób na "wyciągnięcie" bazy danych (i samej bazy danych) ze strony internetowej? Czy mogę też powiedzieć komendzie "wdrażanie", aby zignorować bazę danych?

Dzięki ludziom.

+0

Jaki silnik bazy danych? MySQL, PostgreSQL? W każdym razie możesz po prostu zrobić coś takiego jak mysqldump/restore tak jak w przypadku dowolnej bazy danych uruchomionej w dowolnym miejscu. –

+0

Dziękuję za komentarz, @Mark. Jest to tylko wersja SQLite i nie wiem, jak uzyskać dostęp do wersji online bazy danych w Elastic Beanstalk. Czy jest jakiś sposób na zrobienie tego? –

+0

Jeśli jest to SQLite, to jest to zupełnie inna sytuacja (byłoby to dobre informacje do włączenia w oryginalne pytanie). Prawdopodobnie będziesz musiał określić sposób wdrożenia danych przy każdym uruchomieniu aplikacji. Czy ograniczasz aplikację Beanstalk do pojedynczej instancji EC2? –

Odpowiedz

0

Jak już zostało powiedziane w kilku komentarzach, ponieważ (prawdopodobnie) twoja baza danych SQLite jest plikiem w twoim katalogu projektu, jest ona zastępowana/usuwana za każdym razem, gdy wdrażasz aplikację, dlatego tracisz wszystkie dane pomiędzy wdrożeniami.

Dla instancji produkcyjnych (a szczególnie dla tych usług PaaS) należy użyć zewnętrznej bazy danych (PostgreSQL, MySQL itp.).

Udzielenie odpowiedzi na pytanie bardziej bezpośrednio i zakładając, że chcesz pozostawić swoją konfigurację taką, jaka jest (przynajmniej gdy zadałeś to pytanie), widzę dwa sposoby na zapisanie bazy danych między rozmieszczeniami. Jeden uzyskuje dostęp do instancji i pobiera plik bazy danych, a drugi eksportuje dane za pomocą komendy dumpdata z django, a następnie ładuje ją przy użyciu loaddata.

+0

Ostatecznie przeniosłem swoją bazę danych na serwer MySQL i wskazałem na nią wersje produkcyjne i programistyczne, oparte na tym i porady w komentarzach. Dzięki. –