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
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.
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