Creé un contenedor docker con un script de python. El script de python toma un archivo de entrada, realiza algún procesamiento y guarda el archivo de salida en una ubicación específica.
docker run /app/script.py --input /data/input.csv --output /data/output.csvDado que el archivo de entrada puede ser diferente cada vez que ejecuto el script, quiero que esté fuera del contenedor acoplable. También me gustaría almacenar la salida en algún lugar fuera del contenedor.
docker run /app/script.py --input /my/local/location/outside/docker/input.csv --output /my/local/location/outside/docker/output.csv¿Docker admite esto? Si es así, ¿cómo sería capaz de lograrlo?
Mi Dockerfile se parece a lo siguiente:
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 . /appPuede montar un directorio con el archivo dentro como un volumen de datos de Docker usando la opción -v: https://docs.docker.com/engine/tutorials/dockervolumes/
docker run -d -P --name myapp -v /app mydir/app python script.pyEsto tendrá el beneficio adicional de permitirle detener el contenedor, realizar cambios en el archivo e iniciar el contenedor y ver el cambio reflejado dentro del contenedor.
por lo que debe agregar a su Dockerfile una línea
ENTRYPOINT ["python","/app/script.py"]
y un
CMD myinput
o algo similar,
leer
¿Cuál es la diferencia entre CMD y ENTRYPOINT en un Dockerfile?
lea los documentos sobre
https://docs.docker.com/engine/reference/builder/#entrypoint
y