首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建docker镜像时Prefect出错,是什么触发Prefect使用healthcheck.py创建临时文件夹

创建docker镜像时Prefect出错,是什么触发Prefect使用healthcheck.py创建临时文件夹
EN

Stack Overflow用户
提问于 2021-12-02 10:47:46
回答 1查看 113关注 0票数 0

当使用docker作为存储时,在调用中如下:

代码语言:javascript
复制
prefect register --project yourproject -p yourflow.py

似乎perfect创建了一个tmp{randomNumber}文件夹,并放置了参与docker构建的healthcheck.py和docker文件。

但是我不小心删除了tmp文件夹,即使我恢复了它,它仍然抛出以下错误。发生的事情是Prefect期望一个以新的random_number作为后缀的tmp文件夹。我如何才能从中恢复呢?

代码语言:javascript
复制
Step 10/11 : COPY ./tmpnu2k398p/healthcheck.py /opt/prefect/healthcheck.py
COPY failed: stat /var/lib/docker/tmp/docker-builder531146691/tmpnu2k398p/healthcheck.py: no such file or directory
Error loading 'prefect_register_flow.py':
  Traceback (most recent call last):
    File "/Users/zhengxie1/workspace/cog_ana_model_train/venv/lib/python3.7/site-packages/prefect/cli/build_register.py", line 134, in load_flows_from_script
    namespace = runpy.run_path(abs_path, run_name="<flow>")
    File "/Users/zhengxie1/.pyenv/versions/3.7.3/lib/python3.7/runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
    File "/Users/zhengxie1/.pyenv/versions/3.7.3/lib/python3.7/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
    File "/Users/zhengxie1/.pyenv/versions/3.7.3/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
    File "/Users/zhengxie1/workspace/cog_ana_model_train/prefect_register_flow.py", line 77, in <module>
    flow.storage.build()
    File "/Users/zhengxie1/workspace/cog_ana_model_train/venv/lib/python3.7/site-packages/prefect/storage/docker.py", line 303, in build
    self._build_image(push=push)
    File "/Users/zhengxie1/workspace/cog_ana_model_train/venv/lib/python3.7/site-packages/prefect/storage/docker.py", line 370, in _build_image
    "Your docker image failed to build!  Your flow might have "
  ValueError: Your docker image failed to build!  Your flow might have failed one of its deployment health checks - please ensure that all necessary files and dependencies have been included.
EN

回答 1

Stack Overflow用户

发布于 2021-12-02 11:09:02

作为一种快速修复方法,您可以禁用健康检查:

代码语言:javascript
复制
from prefect.storage import Docker

Docker(ignore_healthchecks=True)

通常,看起来您在Docker容器中运行注册本身,这就是运行状况检查失败的原因。注册步骤是构建镜像,现在您正在从Docker容器构建Docker镜像,而不是从本地进程。从理论上讲,你可以用docker.sock来解决这个问题,但是有一种更简单的方法。

您可以为注册过程创建一个虚拟环境。在该环境中,您可以使用CLI一次性注册所有流,而不是使用自定义代码:

代码语言:javascript
复制
prefect register --project yourproject -p /path/to/flows/dir/

然后,将逐个注册dir目录中的所有流,并且Prefect将为每个流构建自己的Docker镜像。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70198040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档