我想将读取/写入文件的Python脚本容器化。该脚本具有非常特定的环境要求,因此我想使用Docker使部署变得容易且可重复。
这些是脚本的命令行选项:
% python myscript.py --help
usage: myscript.py [-h] inputfile outputfile
positional arguments:
inputfile input file to read from
outputfile output file to write to
optional arguments:
-h, --help show this help message and exit
到目前为止,这是我的Dockerfile的外观:
FROM ubuntu:18.04
# Install requirements
RUN ...
# Install the script from source code
WORKDIR /src
RUN ...
# Define entrypoint to the container
WORKDIR /root
ENTRYPOINT ["python3.7", "/src/myscript/myscript.py"]
这就是我希望能够使用容器化应用程序的方式:
docker build -t myscript .
docker run \
-v <some_very_clever_bind_mount> \
myscript <input_relative_to_host_dir> <output_relative_to_host_dir>
即我希望能够指定相对于主机操作系统上执行docker run
命令的位置的输入和输出文件。换句话说,对于我们正在处理容器化应用程序而不是在主机操作系统上运行的脚本这一事实要完全透明。
有人能想到一种使我成为可能的聪明方法吗?
还是有另一个实现我的高级目标的Docker设计模式?
任何帮助表示赞赏!
PS:我的灵感来自于Google Cloud Build中的容器化构建步骤,但是我不确定Google如何实现构建环境文件系统的绑定以使其行为成为可能。
PPS:Dockerized executable read/write on host filesystem是一个类似的问题,但是我已经知道通过绑定卷是可能的。我的问题的本质是,从在主机OS上提供文件路径的角度来看,如何以一种与Docker容器自然交互的方式来实现它。