Sto distribuendo un progetto Django in AWS usando Elastic Beanstalk e sono bloccato nella migrazione del database.Django AWS Elastic Beanstalk migrate database
Dove sono: Sono in grado di distribuire correttamente il mio progetto django e caricare la pagina tramite mysubdomain.elasticbeanstalk.com. La pagina viene caricata senza errori finché non arrivo a una pagina che deve effettuare una chiamata al database. Ho quindi ricevuto un errore come relation "accounts_user" does not exist LINE 1: SELECT COUNT(*) FROM "accounts_user"
perché il mio database non è stato migrato.
Quello che ho provato: Ho provato diverse varianti di cose. Fortunatamente ci sono un'abbondanza di post Stackoverflow e un paio di tutorial. Sfortunatamente, sembra che tutti stiano usando una versione diversa e ciò che suggeriscono non si applica al mio progetto.
È abbastanza chiaro per me che ho bisogno di eseguire la migrazione in un file foobar.config
all'interno della cartella .ebextensions/
. Qui è la base di ciò che voglio fare:
container_commands:
01_migrate:
command: "python manage.py migrate --noinput"
leader_only: true
Nei registri, vedo che lo script di distribuzione postale ha provato a correre ma non è riuscito. Non ricevo altre informazioni sull'errore, l'unica cosa che vedo è qualcosa come "ERRORE: 01_migrate post script di distribuzione fallito"
Ho scoperto che ho bisogno di attivare l'ambiente virtuale per il comando, il che rende senso. Da asdf provo questo:
container_commands:
01_migrate:
command: "source /opt/python/run/venv/bin/activate && python rlg/manage.py migrate --noinput"
leader_only: true
Ma non funziona. Infatti, tramite SSH, scopro che non ho nemmeno una cartella/opt/python /, solo/opt/aws/e/opt/elasticbeanstalk /. Tutte le esercitazioni e le domande SO si riferiscono a questa cartella ma non ce l'ho?
VERSIONI: Python 3.4.1, 1.7.7 Django, AWS CLI 3.2.1, Postgres 9.3
Sono bloccato nello stesso posto. Quello che ho scoperto: i comandi Container_ non vengono eseguiti all'interno del contenitore finestra mobile. Sono eseguiti sull'istanza di ec2 stessa. Immagino che dobbiamo eseguire la migrazione con qualcosa come "docker exec [nome_contenitore]/var/app/bin/python manage.py migrare --noinput Sfortunatamente sto ancora lottando per trovare il corretto [container_name] –
@SebastianAnnies impressionante , felice di aver trovato qualcuno nello stesso posto! Grazie per il suggerimento lavorerò anche su quello e ti faccio sapere tutto quello che trovo – awwester