Docker input/output outside the container

I created a docker container with a python script. The python script takes an input file, does some processing and saves output file at some specified location.

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

Since the input file can be different every time I run the script, I want it to be outside the docker container. I also would like to store the output somewhere outside the container.

  • Store `docker run` command output in BASH variable
  • How should I handle Perl module updates when maintaining docker images?
  • docker run with cd command fails with executable file not found in $PATH
  • Error installing node.js on google compute engine docker image
  • Set the hostname of the host from WITHIN a docker container
  • Nginx + dnsmasq = 'could not be resolved (5: Operation refused)'
  • docker run /app/script.py --input /my/local/location/outside/docker/input.csv --output /my/local/location/outside/docker/output.csv
    

    Does docker support this? If so, how would one be able to achieve it?

    My Dockerfile looks like the following:

    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
    

  • Setting Docker container hostname on Elastic Beanstalk
  • Rails + Docker: ffi gem update today broke deploy?
  • Linking container with docker-compose
  • Install Tensorflow on Windows Docker installation
  • Deploy NWJS with docker
  • Docker container link not setting environment variables
  • 2 Solutions collect form web for “Docker input/output outside the container”

    You could mount a directory with the file inside as a Docker data volume using the -v option: https://docs.docker.com/engine/tutorials/dockervolumes/

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

    This will have the added benefit of allowing you to stop the container, make changes to the file, and start the container and see the change reflected within the container.

    so you should add to your Dockerfile a line

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

    and a

    CMD myinput

    or something similar,

    read

    What is the difference between CMD and ENTRYPOINT in a Dockerfile?

    read the docs about

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

    and

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

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.