我应该在 Prefect 流程中作为任务运行的实际工作负载都打包为 docker 镜像。所以流基本上只是“运行这个容器,然后运行那个容器”。
但是,我找不到任何关于如何轻松启动 docker 容器作为任务的示例。基本上,我只需要docker run一个流。
我知道https://docs.prefect.io/api/latest/tasks/docker.html并尝试了CreateContainer和 的各种组合StartContainer,但没有任何运气。
小智 8
对于您的用例,使用 Prefect 任务库中的 Docker 任务可能如下所示:
from prefect import task, Flow
from prefect.tasks.docker import (
CreateContainer,
StartContainer,
GetContainerLogs,
WaitOnContainer,
)
create = CreateContainer(image_name="prefecthq/prefect", command="echo 12345")
start = StartContainer()
wait = WaitOnContainer()
logs = GetContainerLogs()
@task
def see_output(out):
print(out)
with Flow("docker-flow") as flow:
container_id = create()
s = start(container_id=container_id)
w = wait(container_id=container_id)
l = logs(container_id=container_id)
l.set_upstream(w)
see_output(l)
flow.run()
Run Code Online (Sandbox Code Playgroud)
上面的这个片段将创建一个容器,启动它,等待完成,检索日志,然后将输出打印echo 12345到命令行。
或者,您也可以直接在您自己的任务中使用 Docker Python 客户端https://docker-py.readthedocs.io/en/stable/api.html#module-docker.api.container
| 归档时间: |
|
| 查看次数: |
797 次 |
| 最近记录: |