跳转到主要内容

Dockerfile的人类友好替代品。

项目描述

docked

Dockerfile的人类友好替代品。它是一个用于生成Docker镜像的Python库,API设计旨在安全、简单且易于正确使用。

功能

  • 仅Python库。没有自定义语法,没有猴子补丁,没有魔法。获得Python的全部功能。
  • 100%类型安全。代码库完全类型注解和类型检查,我们投入了大量精力,使API变得最好,使得无效或不安全的用法成为不可能。
  • 支持所有版本的Dockerfile和Containerfile标准和语法。
  • 根据您使用的功能自动选择最兼容的语法版本。
  • 内置检查器,帮助您创建安全有效的容器。
  • API与Dockerfile的非常接近.
  • 我们最重要的任务是提供一个 友好且简单 的方式来制作Docker镜像。我们精心设计了我们的API,以避免Docker新手最常犯的错误。
  • 生成可读性高且有效的Dockerfile,因此您可以与其他任何工具一起使用,而无需任何供应商锁定。

为什么

Dockerfile已经存在,但我们仍然创建了此项目。这有很多很好的理由

  • Python很强大。您可以获得循环、条件、环境变量、命令行工具以及Dockerfile永远不会得到的很多其他酷炫功能。
  • Python 拥有强大的工具集。您将获得代码检查器、类型检查器、自动格式化工具、调试器、自动补全、语法高亮等功能,使您的代码易于编写、阅读和维护。
  • Python 拥有优秀的生态系统。您可以使用 docker.py 超越仅构建容器的功能,使用 boto3 在构建时访问 S3 密钥,使用 slack SDK 发送关于构建状态的通告,使用 toml 读取配置文件,使用 dotenv 支持 .env 文件,以及任何您能想到的其他功能。
  • Python 拥有经过多年设计,由聪明人设计的简洁且富有表现力的语法。

我们的目标是提供最佳可能的 IDE 辅助功能给用户。所有 API 都简洁、精确、明确、文档齐全,并且 100% 类型注解。Docked 将为您的团队带来比 Docker 梦寐以求的更好的学习体验。

安装

python3 -m pip install docked

使用

不再多言,是时候编写代码了!

import docked as d

stage = d.Stage(
    base=d.BaseImage('python', tag='3.11-alpine'),
    build=[
        d.RUN(
            d.cmd.pip_install('cowsay'),
        ),
    ],
    run=[
        d.CMD(['cowsay', 'hello world!'])
    ],
)
image = d.Image(stage)

if __name__ == '__main__':
    image.lint()
    print(image)

发生了什么

  1. d.Image 等同于一个单独的 Dockerfile 文件。它包含一个或多个阶段。您可以在每个镜像中拥有多个阶段,在 多阶段构建 中进行。
  2. d.Stage 是一个单独的“阶段”。您可以有多个阶段。
  3. base=d.BaseImage(...) 是阶段基于的镜像。它可以是 Docker Hub 上可用的任何内容。
  4. build=[...] 是构建镜像时执行的步骤列表。大多数步骤对应于具有相同名称的 Docker 指令
  5. d.RUN(...) 与 Docker 中的 RUN 相同。它告诉在构建镜像时运行给定的 shell 命令列表。
  6. d.cmd.pip_install 是一个便利函数,它将生成一个命令来安装给定的包。它比仅仅传递 pip install cowsay 更好,因为它将生成一个遵循 Docker 镜像中安装 Python 包的最佳实践的命令。Docked 提供了一些最有用的便利函数,但数量不多,我们不希望它过于冗长。
  7. run=[...] 是描述镜像如何运行的 Docker 指令列表,而不是描述如何构建镜像。一个很好的例子是 VOLUME,在构建镜像时不能挂载卷,因此它可以传递在 run=[...] 中,但不能传递在 build=[...] 中。
  8. image.lint() 运行内置的代码检查器,以确保我们遵循构建 Docker 镜像的最佳实践。
  9. print(image) 生成 Dockerfile 并将其打印到 stdout。

现在,将其传递到 docker 并运行镜像

python3 examples/cowsay.py | docker buildx build --tag=hello:latest -
docker run hello:latest

您应该看到 Mr. Cow

  ____________
| hello world! |
  ============
            \
             \
               ^__^
               (oo)\_______
               (__)\       )\/\
                   ||----w |
                   ||     ||

了解更多

  1. docked.orsinium.dev 提供文档。
  2. examples” 目录包含示例,所有示例都是真实可运行的。
  3. 您应该能够仅安装 docked 并开始使用它。它具有相当好的类型注解和文档字符串,因此让您的 IDE 引导您。

项目详情


下载文件

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

源代码分发

docked-0.1.0.tar.gz (25.2 kB 查看哈希值)

上传时间 源代码

构建分发

docked-0.1.0-py3-none-any.whl (19.6 kB 查看哈希值)

上传时间 Python 3

由以下支持