Kedro-Docker使得使用Docker打包Kedro项目变得简单。
项目描述
Kedro-Docker
Docker是一个工具,使得创建、部署和运行应用程序变得更容易。它使用容器将应用程序及其依赖项打包在一起,然后在隔离的虚拟环境中运行应用程序。
配置Docker容器环境可能会变得复杂和繁琐。Kedro-Docker显著简化了这一过程,将其减少为2个步骤
- 构建Docker镜像
- 在Docker环境中运行您的Kedro项目
注意: Kedro-Docker还使得在Docker容器中运行IPython和Jupyter笔记本变得容易。
我如何安装Kedro-Docker?
Kedro-Docker是一个Python插件。要安装它
pip install kedro-docker
我如何使用Kedro-Docker?
先决条件
以下条件必须满足,Kedro-Docker才能打包您的项目
- 请确保您已经安装了Docker
- Kedro-Docker假设您的系统中Docker守护进程已启动并运行
生成Dockerfile
为了为您的项目生成Dockerfile,请导航到项目的根目录,然后在命令行中运行以下命令
kedro docker init
此命令将为您的项目生成Dockerfile、.dockerignore和.dive-ci文件。
选项
--with-spark
- 创建具有Spark和Hadoop支持的Dockerimage文件的可选标志-h, --help
- 显示命令帮助并退出。
构建Docker镜像
为了为您的项目构建Docker镜像,请导航到项目的根目录,然后在命令行中运行以下命令
kedro docker build
幕后Kedro执行以下操作
- 如果在项目根目录中不存在,创建模板
Dockerfile
和.dockerignore
文件 - 使用项目根目录中的
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
上述命令将
- 定位上一节中构建的镜像
- 将整个项目目录复制到
/home/kedro
容器路径中 - 在新容器中执行
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 在容器中设置环境变量 KEY
为 MYVALUE
。您可以在这里了解更多可用选项。
所有其他 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 Notebookkedro 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 命令。
例如
kedro docker cmd kedro test
将在容器内运行kedro test
kedro docker cmd
将在容器内运行kedro run
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 支持由 CPython 核心团队积极维护的所有 Python 版本。当一个 Python 版本达到生命周期的结束 时,对该版本的支持将从
kedro-docker
中删除。这不会被视为破坏性变更。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
kedro_docker-0.6.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9a9bf3e3f0fc4ec88b07f731379f68578d54395e7b0f3a171cf411410922b346 |
|
MD5 | fea6632a66bba54ecc75d62cf831f611 |
|
BLAKE2b-256 | 527e5809abbb51c0be817654b6c14c98efdc4f430b5f0cdf915ca049598e77d6 |
kedro_docker-0.6.1-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 72179ed96425010b429769a89bc45c7fedf6ca92040d6bc4f68548563e0d09ed |
|
MD5 | 671f84aa7d371a99a3ce15ab690f3d08 |
|
BLAKE2b-256 | 495c9df04c0f7deb36eedce9b398259fd64d162b747be70fd18e601e58e50e6d |