6 votes

Impossible de localiser le fichier dans le conteneur docker

Je suis nouveau à docker et je crée une simple application de test pour tester mon conteneur docker, mais docker n'arrive pas à localiser le fichier server.py fichier.

La structure des répertoires de mon projet est la suivante

<project>
|
|-- Dockerfile
|-- app
      |
      |-- requirements.txt
      |-- server.py

Vous trouverez ci-dessous le Dockerfile le contenu :

FROM ubuntu:latest

MAINTAINER name <mail@domain.com>

COPY . /app  # do I need this ?
COPY ./app/requirements.txt /tmp/requirements.txt

RUN apt-get -y update && \
apt-get install -y python-pip python-dev build-essential
RUN pip install -r /tmp/requirements.txt

WORKDIR /app
RUN chmod +x server.py    # ERROR: No such file or directory

EXPOSE 5000

ENTRYPOINT ["python"]
CMD ["server.py"]    # ERROR: No such file or directory

J'utilise boot2docker sous Windows.

Qu'est-ce qui m'échappe ?

12voto

Arno C Points 188

Vous copiez votre /app/ dans le dossier /app/ dans le conteneur Docker en cours d'exécution (comme indiqué dans les commentaires) en créant un dossier /app/app/server.py dans le conteneur Docker.

Comment résoudre le problème

Une solution simple consiste à modifier

COPY . /app

à

COPY ./app/server.py /app/server.py

Explication

La orden COPY fonctionne comme suit :

COPY <LOCAL_FROM> <DOCKER_TO>

Vous sélectionnez tout ce qui se trouve dans le dossier où réside le fichier Docker, en utilisant la commande . dans votre première COPY , sélectionnant ainsi la valeur locale de /app à ajouter au dossier de Docker. La destination que vous lui attribuez dans le conteneur Docker est également /app et donc le chemin dans le conteneur en cours d'exécution devient /app/app/.. expliquant pourquoi vous ne trouvez pas le fichier.

Jetez un coup d'œil à la Documentation Docker .

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