2 votes

Construction de pipenv avec un fichier de requirements sur Docker

Je rencontre un gros problème pour construire ma version dockerisée de l'application flask. Au départ, je ne parviens pas à installer les dépendances du fichier requirements.txt qui est fourni à l'intérieur du conteneur lui-même. Voici la structure du dossier :

.
 app
    ASRModule.py
    auth.py
    config
    files
    index.py
    __init__.py
    Interval.py
    MySQLDBHandler.py
    __pycache__
    SIPCall.py
    SOAPClient.py
    static
    stats.py
    templates
    TrunkOccupation.py
    TrunkTraffic.py
 Dockerfile
 instance
 requirements.txt

Et voici mon Dockerfile avec lequel je veux construire un conteneur :

FROM python:3.5.2-alpine

COPY . /flask
WORKDIR /flask

RUN pip install --upgrade pip
RUN pip install pipenv

CMD ["pipenv", "shell", "testshell"]
CMD ["pipenv","install", "-r ./requirements.txt"]

À ma compréhension, après la construction terminée, je devrais avoir la même structure de dossier à l'exception d'un répertoire ci-dessus appelé flask qui contiendra tous les fichiers et répertoires mentionnés ci-dessus. Je devrais également avoir un environnement virtuel appelé testshell dans lequel toutes les dépendances du requirements.txt devraient être installées. Jusqu'à présent, tout fonctionne parfaitement bien. Cependant, à ma déception, après avoir essayé d'exécuter ce conteneur, je vois un environnement virtuel correctement construit et une telle erreur :

Le fichier requirements semble ne pas exister. Veuillez vous assurer que le fichier existe dans votre répertoire de projet ou que vous avez fourni le bon chemin.

J'ai essayé divers chemins pour le fichier requirements mais rien n'a aidé. Je suis reconnaissant pour toute aide qui me pointera là où je fais erreur.

3voto

Antti Haapala Points 11542

L'erreur est assez simple, mais rendue difficile à remarquer par le mauvais message d'erreur - il ne dit pas quel fichier il essaie de charger. Le fichier qu'il essaie de charger est '/flask/ ./requirements.txt', c'est-à-dire requirements.txt dans un sous-répertoire nommé space. - cf. avec le message d'erreur de pip:

% "pip" "install" "-r ./requirements.txt"
Impossible d'ouvrir le fichier de requirements:
[Errno 2] Aucun fichier ou dossier de ce type : ' ./requirements.txt'

La solution est de soit enlever l'espace, ou diviser correctement les arguments:

CMD ["pipenv", "install", "-r./requirements.txt"]

ou

CMD ["pipenv", "install", "-r", "./requirements.txt"]

les deux devraient fonctionner.


Je suggère que vous vous plaigniez du mauvais message d'erreur au suivi des problèmes de pipenv.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X