一个非常简单的python程序,假设当前目录是/PYTHON,我想将file.txt作为参数传递给python脚本boot.py,这是我的Dockerfile
FROM python
COPY boot.py ./
COPY file.txt ./
RUN pip install numpy
CMD ["python", "boot.py", "file.txt"]
然后我使用以下命令构建 Docker 容器:
docker build -t boot/latest .
然后运行容器
docker run -t boot:latest python boot.py file.txt
我得到了正确的结果。
但是如果我将另一个文件 file1.txt 复制到当前目录(从不同的目录(不是 /PYTHON)),那么我再次运行容器:
docker run -t boot:latest python boot.py file1.txt
我收到以下错误:
FileNotFoundError:[Errno 2] 没有这样的文件或目录:’file1.txt’
所以错误是由于 file1.txt 不在容器中,但是如果我与朋友共享这个容器并且朋友想要传递一个非常不同的文件作为参数,我该如何编写 Dockerfile 以便任何人使用我的容器可以将非常不同的文件作为参数传递而不会出错?提前致谢。 (我是 Docker 新手)
原文由 mpp 发布,翻译遵循 CC BY-SA 4.0 许可协议
它不会那样工作。就像你说的,
file1.txt
不在容器中。解决方法是在运行容器时使用 Docker 卷将文件从主机注入到容器中。
像这样的东西:
然后
/local/path/to/file1.txt
将是主机上的路径,它将覆盖容器上的/container/path/to/file1.txt
。