Django: DB-Objekte beim 1. Start eines Docker-Containers anlegen

Django, Flask, Bottle, WSGI, CGI…
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hallo,

ich müsste beim ersten Start meines Docker-Containers für eine Klasse ca. 1000 Objekte anlegen. Wie macht man das?

Sollte ich einen separaten Endpunkt für die Erstellung anlegen, der dann einmal nach Start aufgerufen wird?

Oder sollte ich im entrypoint.sh (wo auch die Migrationen ausgeführt werden) auch direkt die 1000 Objekte erzeugen? Wenn ja, wie macht man das? :)

LG und Danke
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Oder sollte ich im entrypoint.sh (wo auch die Migrationen ausgeführt werden)[...]
Migrationen im entrypoint auszuführen ist ziemlich problematisch. Grund dafür ist das wenn mehrere Container gleichzeitig starten sollte, die parallel Migrationen ausführen. Django hat da keinen adäquaten Mechanismus um dies zu verhindern. Selbst wenn die Migrationen Idempotent sind, kann das je nachdem was in den Migrationen passiert die Datenbank ziemlich belasten. Ich würde empfehlen Migrationen in einen separaten Schritt auszugliedern, der beim Deployment einmal ausgeführt wird, so dass Migrationen nicht parallel laufen können.

Um zu deinem eigentlichen Problem zu kommen, da der Titel sagt es handle sich um DB-Objekte, wäre die richtige Lösung diese Objekte im Rahmen einer Data Migration zu erstellen.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Danke
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Antworten