跳转到主要内容

Kedro-Docker使得使用Docker打包Kedro项目变得简单。

项目描述

Kedro-Docker

Python Version PyPI version License Code Style: Black

Docker是一个工具,使得创建、部署和运行应用程序变得更容易。它使用容器将应用程序及其依赖项打包在一起,然后在隔离的虚拟环境中运行应用程序。

配置Docker容器环境可能会变得复杂和繁琐。Kedro-Docker显著简化了这一过程,将其减少为2个步骤

  1. 构建Docker镜像
  2. 在Docker环境中运行您的Kedro项目

注意: Kedro-Docker还使得在Docker容器中运行IPython和Jupyter笔记本变得容易。

我如何安装Kedro-Docker?

Kedro-Docker是一个Python插件。要安装它

pip install kedro-docker

我如何使用Kedro-Docker?

先决条件

以下条件必须满足,Kedro-Docker才能打包您的项目

生成Dockerfile

为了为您的项目生成Dockerfile,请导航到项目的根目录,然后在命令行中运行以下命令

kedro docker init

此命令将为您的项目生成Dockerfile、.dockerignore和.dive-ci文件。

选项

  • --with-spark - 创建具有Spark和Hadoop支持的Dockerimage文件的可选标志
  • -h, --help - 显示命令帮助并退出。

构建Docker镜像

为了为您的项目构建Docker镜像,请导航到项目的根目录,然后在命令行中运行以下命令

kedro docker build

幕后Kedro执行以下操作

  1. 如果在项目根目录中不存在,创建模板Dockerfile.dockerignore文件
  2. 使用项目根目录中的Dockerfile构建项目镜像

注意: 当调用kedro docker build时,您也可以通过指定--docker-args选项传递任何特定的docker build选项。例如,kedro docker build --docker-args="--no-cache"指示Docker在构建镜像时不使用缓存。您可以在这里了解更多有关可用选项的信息。

注意: 默认情况下,kedro docker build创建的镜像没有Spark和Hadoop。

注意: 默认情况下,当调用kedro docker build时,使用python:VERSION-buster镜像构建镜像,其中VERSION是当前环境中的Python(主版本+次要版本)。通过指定--base-image选项,可以使用不同的基础镜像。例如:kedro docker build --base-image="python:3.8-buster"

注意: 您可以通过运行kedro docker init来生成Dockerfile、.dockerignore或.dive-ci文件,而无需构建镜像。这可能在您想要在第一次构建之前修改这些文件时很有用。

项目Docker镜像将自动标记为<project-root-dir>:latest,其中<project-root-dir>是项目根目录的名称。要更改标记,可以添加--image命令行选项,例如:kedro docker build --image my-project-tag

在构建镜像时,Kedro将当前项目的所有内容复制到镜像中,但它会忽略在.dockerignore文件中指定的位置,以防止可能敏感的数据传播到镜像中。我们建议在运行时挂载这些卷。

选项

  • --uid - 容器内kedro用户的可选整数用户ID。默认为当前用户的UID
  • --gid - 容器内kedro用户的可选整数组ID。默认为当前用户的GID
  • --image - 可选Docker镜像标记。默认为项目目录名称
  • --docker-args - 包含docker build命令额外选项的可选字符串
  • --with-spark - 可选标志,用于创建带有Spark和Hadoop的镜像
  • --base-image - 可选基础Docker镜像。默认为具有当前环境Python版本的Debian buster,例如:python:3.8-buster
  • -h, --help - 显示命令帮助并退出。

在Docker环境中运行您的项目

一旦构建了项目镜像,您就可以使用Docker环境运行项目

kedro docker run

上述命令将

  1. 定位上一节中构建的镜像
  2. 将整个项目目录复制到/home/kedro容器路径中
  3. 在新容器中执行kedro run命令

注意: kedro docker run 命令向底层的 docker run 调用添加了 --rm 标志,因此当容器退出时,容器将自动被删除。请确保在运行时在容器外部持久化所有必要的数据,以避免数据丢失。

默认情况下,kedro docker run 将使用标记为 <project-root-dir>:latest 的镜像来创建容器。如果您在上一步骤中重命名了您的镜像,请还提供相应的 --image 选项和镜像标记,例如:kedro docker run --image "my-custom-image:latest"

当调用 kedro docker run 时,您还可以通过提供 --docker-args 选项传递任何特定的 docker run 选项。由于 --docker-args 可能包含多个参数,所以添加引号是个好主意。例如,kedro docker run --docker-args="--env KEY=MYVALUE" 指示 Docker 在容器中设置环境变量 KEYMYVALUE。您可以在这里了解更多可用选项。

所有其他 CLI 选项将被附加到容器内的 kedro run 命令中。例如,kedro docker run --parallel 将在容器内运行 kedro run --parallel

选项

  • --image - 要使用的 Docker 镜像名称,默认为项目根目录名称
  • --docker-args - 包含 docker run 命令额外选项的可选字符串
  • -h, --help - 显示命令帮助并退出
  • 任何其他选项将被视为 kedro run 命令选项。

使用 Docker 进行交互式开发

除了 kedro docker run 之外,Kedro 还支持以下命令

  • kedro docker ipython - 在容器中运行 IPython 会话
  • kedro docker jupyter notebook - 在容器中启动 Jupyter Notebook
  • kedro docker jupyter lab - 在容器中启动 Jupyter Lab

选项

  • --image - 要使用的 Docker 镜像名称,默认为项目根目录名称
  • --docker-args - 包含 docker run 命令额外选项的可选字符串
  • --port - 容器端口将被映射到的宿主端口,默认为 8888。此选项仅适用于 kedro docker jupyter 命令
  • -h, --help - 显示命令帮助并退出
  • 任何其他选项将被视为相应的 kedro 命令 CLI 选项。例如,kedro docker jupyter lab --NotebookApp.token='' --NotebookApp.password='' 将运行没有密码和令牌的 Jupyter Lab 服务器。

重要:请注意,项目的源代码目录(src 文件夹)默认情况下不会被挂载到 Docker 容器中。这意味着如果在容器内 src 目录中更改任何代码,这些更改将不会被保存到主机机器上,并且当容器终止时将完全丢失。为了在运行 Jupyter Lab 时挂载整个项目,例如,运行以下命令

kedro docker jupyter lab --docker-args "-v ${PWD}:/home/kedro"

使用 Dive 进行图像分析

Kedro-Docker 允许通过利用 Dive 来分析您项目镜像的大小效率

kedro docker dive

注意: 默认情况下,Kedro-Docker 以 CI 模式调用 Dive。如果您想通过 UI 探索您的镜像,请运行 kedro docker dive --no-ci

选项

  • --ci / --no-ci - 以非交互模式运行 Dive 的标志。默认为 true
  • --ci-config-path - Dive CI 配置文件的位置。默认为项目根目录中的 .dive-ci
  • --image - 要使用的 Docker 镜像名称,默认为项目根目录名称
  • --docker-args - 包含 docker run 命令额外选项的可选字符串
  • -h, --help - 显示命令帮助并退出。

使用 Docker 运行自定义命令

您也可以通过执行 kedro docker cmd <CMD> 在 Docker 容器中运行任意命令,其中 <CMD> 对应于您想要执行的命令。如果未指定 <CMD>,则将在容器内执行 kedro run

注意: 如果您正在运行 kedro 命令,与前面的章节不同,您应指定包括 kedro 关键字在内的整个命令。这样做是为了允许执行非 Kedro 命令。

例如

  1. kedro docker cmd kedro test 将在容器内运行 kedro test
  2. kedro docker cmd 将在容器内运行 kedro run
  3. kedro docker cmd --docker-args="-it" /bin/bash 将在容器中创建一个交互式 bash shell(并分配一个连接到容器 stdin 的伪 TTY)。

选项

  • --image - 要使用的 Docker 镜像名称,默认为项目根目录名称
  • --docker-args - 包含 docker run 命令额外选项的可选字符串
  • -h, --help - 显示命令帮助并退出。

使用 Kedro-Docker 运行 Kedro-Viz

以下说明允许您通过 Docker 访问 Kedro-Viz,Kedro 的数据管道可视化工具。在您的终端中运行以下命令:

pip download -d data --no-deps kedro-viz
kedro docker build
kedro docker cmd bash --docker-args="-it -u=0 -p=4141:4141"
pip install data/*.whl
kedro viz --host=0.0.0.0 --no-browser

然后,在您的首选浏览器中打开 127.0.0.1:4141。顺便说一句,如果 kedro-viz 已通过 requirements 安装在 Docker 容器中,则您可以运行:

kedro docker cmd --docker-args="-p=4141:4141" kedro viz --host=0.0.0.0

我能贡献吗?

当然可以!想要帮助构建 Kedro-Docker 吗?请查看我们的 贡献指南

您使用什么许可证?

Kedro-Docker 根据 Apache 2.0 许可证 许可。

Python 版本支持策略

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

kedro_docker-0.6.1.tar.gz (17.6 kB 查看散列)

上传时间

构建分布

kedro_docker-0.6.1-py3-none-any.whl (13.3 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面