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.

  • Connection refused by Docker container
  • symfony classes.map failed to open stream: No such file or directory
  • Docker change a port publishing of a running container
  • Edit container project files from host
  • Dial tcp i/o timeout with Docker in Gitlab CI build
  • Docker daemon fails to restart gracefully
  • 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
    

  • Pass environment variable to a java class using dockerfile
  • Kubernetes node Device port (USB) maping to POD? Or Swarm service --device mapping
  • Amazon EC2 boot time
  • Python app does not print anything when running detached in docker
  • Use senecajs with docker
  • Running tensorflow summarisation service with docker instance
  • 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.