web-dev-qa-db-fra.com

Entrée / sortie Docker en dehors du conteneur

J'ai créé un conteneur Docker avec un script python. Le script python prend un fichier d'entrée, effectue un traitement et enregistre le fichier de sortie à un emplacement spécifié).

docker run /app/script.py --input /data/input.csv --output /data/output.csv

Étant donné que le fichier d'entrée peut être différent à chaque fois que j'exécute le script, je souhaite qu'il se trouve en dehors du conteneur Docker. Je voudrais également stocker la sortie quelque part en dehors du conteneur.

docker run /app/script.py --input /my/local/location/outside/docker/input.csv --output /my/local/location/outside/docker/output.csv

Docker prend-il cela en charge? Si oui, comment pourrait-on y parvenir?

Mon Dockerfile ressemble à ceci:

FROM phusion/baseimage

RUN apt-get update
RUN apt-get install -y build-essential
RUN apt-get install -y python-dev
RUN apt-get install -y python-pip
RUN apt-get install -y python-numpy && \
    apt-get install -y python-scipy

COPY ./requirements.txt /app/requirements.txt
COPY ./src/script.py /app/script.py

WORKDIR /app
COPY . /app
15
Abhishek Thakur

Vous pouvez monter un répertoire avec le fichier à l'intérieur en tant que volume de données Docker en utilisant l'option -v: https://docs.docker.com/engine/tutorials/dockervolumes/

docker run -d -P --name myapp -v /app mydir/app python script.py

Cela aura l'avantage supplémentaire de vous permettre d'arrêter le conteneur, d'apporter des modifications au fichier, de démarrer le conteneur et de voir la modification reflétée dans le conteneur.

12
Rome_Leader

vous devez donc ajouter à votre Dockerfile une ligne

ENTRYPOINT ["python","/app/script.py"]

et un

CMD myinput

ou quelque chose de similaire,

lis

Quelle est la différence entre CMD et ENTRYPOINT dans un Dockerfile?

lire les documents sur

https://docs.docker.com/engine/reference/builder/#entrypoint

et

https://docs.docker.com/engine/reference/builder/#cmd

0
user2915097