4 个版本
0.2.1 | 2018 年 12 月 10 日 |
---|---|
0.2.0 | 2018 年 12 月 9 日 |
0.1.1 | 2018 年 12 月 9 日 |
0.1.0 | 2018 年 12 月 9 日 |
#1322 在 开发工具 中
931 每月下载量
在 pwnenv 中使用
31KB
688 行
dockerfile
一个用于动态生成 Dockerfile 的 Rust 库。
这个crate最初是为构建运行在Kubernetes中的客户端工作负载的工作服务Docker镜像而构建的。这绝对不是唯一支持的模式。生成的Dockerfile可以保存到某处或在使用后立即丢弃。生成的容器是标准容器,根据您生成的Dockerfile构建。
截至2018年12月9日,所有Dockerfile指令都支持原始形式。已有一个问题正在开放中,为需要它的指令添加更结构化和类型安全的接口。
开始使用
首先,您需要将其添加到您的 Cargo.toml
依赖项中。
dockerfile = "0.2"
现在您可以开始构建Dockerfile了。
use dockerfile::{
Dockerfile,
Arg,
Copy,
Cmd,
};
fn main() {
// Build up a new Dockerfile.
let dockerfile = Dockerfile::base("rust:${RUST_VERSION}-slim")
.push_initial_arg(Arg::new("RUST_VERSION=1.31"))
.push(Copy::new("/static ./static"))
.push(Cmd::new("echo 'Hello. Goodbye.'"))
.finish();
// Write it out as a string.
let output = dockerfile.to_string();
assert_eq!(output,
r##"ARG RUST_VERSION=1.31
FROM rust:${RUST_VERSION}-slim
COPY /static ./static
CMD echo 'Hello. Goodbye.'
"##)
}
开发
我希望这个crate提供构建各种Dockerfile指令的类型安全接口。这将有助于减少只有在尝试实际调用docker build时才能发现的错误。我想尝试添加各种形式指令的构造函数;例如,提供一个接受 CMD
的构造函数,该构造函数接受 impl Iterator<Item=AsRef<str>>
以构建形式 CMD ["arg0", "arg1"]
等。