Ich bin ein Django-Projekt in AWS mit Elastic Beanstalk bereitstellen und bin bei der Migration der Datenbank fest.Django AWS Elastic Beanstalk migrieren Datenbank
Wo ich bin: Ich bin in der Lage, mein Django-Projekt erfolgreich zu implementieren und laden Sie die Seite über mysubdomain.elasticbeanstalk.com. Die Seite wird ohne Fehler geladen, bis ich zu einer Seite komme, die einen Datenbankaufruf durchführen muss. Ich bekomme dann einen Fehler wie relation "accounts_user" does not exist LINE 1: SELECT COUNT(*) FROM "accounts_user"
, weil meine Datenbank nicht migriert wurde.
Was ich versucht habe: Ich habe einige Variationen der Dinge ausprobiert. Glücklicherweise gibt es eine Fülle von Stackoverflow-Posts und ein paar Tutorials. Leider scheinen sie alle eine andere Version zu verwenden und was sie vorschlagen, trifft nicht auf mein Projekt zu.
Es ist ziemlich klar für mich, dass ich die Migration in einer foobar.config
Datei im Ordner .ebextensions/
ausführen muss. Hier ist die Basis dessen, was ich tun möchte:
container_commands:
01_migrate:
command: "python manage.py migrate --noinput"
leader_only: true
In den Protokollen, wie ich sehe, dass die nach der Bereitstellung Skript auszuführen versucht, aber es ist fehlgeschlagen. Ich bekomme keine weiteren Informationen über den Fehler, die einzige Sache, die ich sehe, ist etwas wie "FEHLER: 01_migrate nach der Bereitstellung Skript fehlgeschlagen"
Ich finde heraus, dass ich die virtuelle Umgebung für den Befehl aktivieren muss, was macht Sinn. Von asdf versuche ich das:
container_commands:
01_migrate:
command: "source /opt/python/run/venv/bin/activate && python rlg/manage.py migrate --noinput"
leader_only: true
Aber es funktioniert nicht. In der Tat, durch SSH finde ich heraus, ich habe nicht einmal einen/opt/python/Ordner, nur/opt/aws/und/opt/elasticbeanstalk /. Alle Tutorials und SO Fragen beziehen sich auf diesen Ordner, aber ich habe es nicht?
BAUVARIANTEN: Python 3.4.1, Django 1.7.7, AWS CLI 3.2.1, Postgres 9.3
Ich bin am selben Ort stecken. Was ich herausgefunden habe: Die container_commands werden NICHT innerhalb des Docker-Containers ausgeführt. Sie werden auf der ec2-Instanz selbst ausgeführt. Ich denke, wir müssen die Migration mit etwas wie "docker exec [container_name]/var/app/bin/python manage.py migration - noinput Leider habe ich immer noch Schwierigkeiten, die richtige [container_name] –
@SebastianAnnies genial Ich bin froh, dass ich jemanden an der gleichen Stelle gefunden habe Danke für den Tipp Ich werde auch daran arbeiten und dich wissen lassen, was ich finde – awwester