Le hook post-compilation sur Deis semble fonctionner différemment que sur Heroku.
Sur Heroku, je pourrais simplement ajouter un fichier bin / post-compilation contenant:
#!/usr/bin/env bash
python manage.py migrate --noinput
Sur Deis cela me donne une trace
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
No module named django.core.management
Quelqu'un utilise-t-il Django sur Deis à l'aide de buildpacks et en a-t-il un exemple concret?
Réponses:
1 pour la réponse № 1J'ai finalement trouvé deux solutions.
La réponse simple est simplement de fournir un chemin complet vers python. Je l’ai testé en ajoutant un fichier bin / post-compilation à deis / exemple-python-django
#!/usr/bin/env bash
/app/.heroku/python/bin/python manage.py migrate --noinput
Cependant, cette solution ne fonctionne pas si vous avez besoin d’accéder à l’une de vos variables de configuration, ce qui est très probablement le cas si vous suivez la méthodologie de l’application 12 Factor.
Malheureusement, deis n’exécute pas les hooks post-compilation de la même manière que Heroku, nous devons donc exporter nos variables d’environnement d’abord. sous-env fonction de la heroku-buildpack-python comme guide, je suis venu avec cette ...
#!/usr/bin/env bash
echo "-----> Running post-compile hook"
BUILD_DIR=/tmp/build
ENV_DIR=/tmp/environment
BLACKLIST="^(GIT_DIR|STACK|PYTHONHOME|LD_LIBRARY_PATH|LIBRARY_PATH|PATH)$"
# Python-specific variables.
export PYTHONHOME=$BUILD_DIR/.heroku/python
export PYTHONPATH=$BUILD_DIR/
if [ -d "$ENV_DIR" ]; then
for e in $(ls $ENV_DIR); do
echo "$e" | grep -E "$WHITELIST" | grep -qvE "$BLACKLIST" &&
export "$e=$(cat $ENV_DIR/$e)"
:
done
fi
$PYTHONHOME/bin/python manage.py migrate --noinput