0

我编写了一个 docker 文件,将我的 python 脚本添加到容器中: ADD test_pclean.py /test_pclean.py

我的目录结构是:

.
├── Dockerfile
├── README.md
├── pipeline.json
└── test_pclean.py

我的 json 文件作为在 Pachyderm 中创建管道的配置文件如下:

{
    "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/" ]
4

2 回答 2

1

就像上面的一些评论所暗示的那样。看起来您的 test_pclean.py 文件不在 docker 映像中。这是应该解决的问题。

  1. 确保你的 test_pclean.py 文件在你的 docker 镜像中,作为构建过程的一部分。将此作为 dockerfile 中的最后一步:

COPY test_pclean.py .

  1. 确保您的厚皮管道规格具有以下cmd部分: "cmd": ["python3", "./test_pclean.py"]

  2. 这更像是一个建议而不是一个要求......如果您将图像标签用作您的 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

于 2019-01-03T18:24:57.720 回答
0

我没有在每次构建时更改对我的 docker 映像的提交,因此,Kubernetes 正在使用它拥有的本地 docker 文件(没有标签和提交,它不承认任何更改)。一旦我开始在每个构建中使用提交,Kubernetes 就开始下载预期的 docker 镜像。

于 2019-01-17T10:20:58.433 回答