我写了一个docker文件,将我的python脚本添加到了容器中:
ADD test_pclean.py /test_pclean.py
我的目录结构是:
.
├── Dockerfile
├── README.md
├── pipeline.json
└── test_pclean.py
用作在Pachyderm中创建管道的配置文件的json文件如下:
{
"pipeline": {
"name": "mopng-beneficiary-v2"
},
"transform": {
"cmd": ["python3", "/test_pclean.py"],
"image": "avisrivastava254084/mopng-beneficiary-v2-image-7"
},
"input": {
"atom": {
"repo": "mopng_beneficiary_v2",
"glob": "/*"
}
}
}
即使我复制了官方文档的示例,也遇到了错误:
python3: can't open file '/test_pclean.py': [Errno 2] No such file or directory
我的dockerfile是:
FROM debian:stretch
# Install opencv and matplotlib.
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y unzip wget build-essential \
cmake git pkg-config libswscale-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt
RUN apt update
RUN apt-get -y install python3-pip
RUN pip3 install matplotlib
RUN pip3 install pandas
ADD test_pclean.py /test_pclean.py
ENTRYPOINT [ "/bin/bash/" ]
答案 0 :(得分:1)
就像上面的一些评论所示。看来您的test_pclean.py文件不在docker映像中。这是应该解决的问题。
COPY test_pclean.py .
确保cmd
部分的厚皮管道规范具有以下内容:
"cmd": ["python3", "./test_pclean.py"]
这更多的是建议,而不是要求。...如果将图像标签用作Docker构建的一部分,您将可以使自己的生活更轻松。如果您默认使用latest
标签,那么管道中此步骤的任何将来的迭代/构建都可能产生负面影响(代码中的新错误等)。因此,最佳实践是在管道中使用特定版本:mopng-beneficiary-v2-image-7:v1
和mopng-beneficiary-v2-image-7:v2
,依此类推。这样,您可以迭代说版本3,并且不会影响已经在运行的管道。
docker build -t avisrivastava254084/mopng-beneficiary-v2-image-7:v1
然后只需更新您的管道规范以使用avisrivastava254084/mopng-beneficiary-v2-image-7:v1
答案 1 :(得分:-1)
我没有在每个构建上更改对docker映像的提交,因此,Kubernetes使用的是它具有的本地docker文件(不带标签和提交,它不确认任何更改)。当我开始在每个构建中使用commit时,Kubernetes开始下载所需的docker映像。