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)
发生了什么
d.Image
等同于一个单独的 Dockerfile 文件。它包含一个或多个阶段。您可以在每个镜像中拥有多个阶段,在 多阶段构建 中进行。d.Stage
是一个单独的“阶段”。您可以有多个阶段。base=d.BaseImage(...)
是阶段基于的镜像。它可以是 Docker Hub 上可用的任何内容。build=[...]
是构建镜像时执行的步骤列表。大多数步骤对应于具有相同名称的 Docker 指令。d.RUN(...)
与 Docker 中的 RUN 相同。它告诉在构建镜像时运行给定的 shell 命令列表。d.cmd.pip_install
是一个便利函数,它将生成一个命令来安装给定的包。它比仅仅传递pip install cowsay
更好,因为它将生成一个遵循 Docker 镜像中安装 Python 包的最佳实践的命令。Docked 提供了一些最有用的便利函数,但数量不多,我们不希望它过于冗长。run=[...]
是描述镜像如何运行的 Docker 指令列表,而不是描述如何构建镜像。一个很好的例子是 VOLUME,在构建镜像时不能挂载卷,因此它可以传递在run=[...]
中,但不能传递在build=[...]
中。image.lint()
运行内置的代码检查器,以确保我们遵循构建 Docker 镜像的最佳实践。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 |
|| ||
了解更多
- docked.orsinium.dev 提供文档。
- “examples” 目录包含示例,所有示例都是真实可运行的。
- 您应该能够仅安装 docked 并开始使用它。它具有相当好的类型注解和文档字符串,因此让您的 IDE 引导您。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
docked-0.1.0.tar.gz (25.2 kB 查看哈希值)
构建分发
docked-0.1.0-py3-none-any.whl (19.6 kB 查看哈希值)
关闭
docked-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ae88318d7c3bf4da094897560ce8c423a6cbf6dedc0294243e125e6be81b71d7 |
|
MD5 | bfa62458337e9566b2b9aa0223986e91 |
|
BLAKE2b-256 | aa48a7b7ab1bda51ad8a1c503babec41314743b47be9cfcde997d4cc967c7ab0 |
关闭
docked-0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1dc3ea96bac469627c8f2030e37aecb8429d8e9f4e0770291eaac5728c27c724 |
|
MD5 | 560025f98466b0a9cc74af54a4a5f7b3 |
|
BLAKE2b-256 | 96a4a6b1912fd95484f81fc464a8a7611b30c85c88c6303746281e06b2b56373 |