Replaced nerdctl CLI shell-out with direct gRPC communication via wfe-containerd-protos (tonic 0.14). Connects to containerd daemon over Unix socket. Implementation: - connect() with tonic Unix socket connector - ensure_image() via ImagesClient (full pull is TODO) - build_oci_spec() constructing OCI runtime spec with process args, env, user, cwd, mounts, and linux namespaces - Container lifecycle: create → snapshot → task create → start → wait → read FIFOs → cleanup - containerd-namespace header injection on every request FIFO-based stdout/stderr capture using named pipes. 40 tests, 88% line coverage (cargo-llvm-cov).
31 lines
854 B
TOML
31 lines
854 B
TOML
[package]
|
|
name = "wfe-containerd"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
homepage.workspace = true
|
|
description = "containerd container runner executor for WFE"
|
|
|
|
[dependencies]
|
|
wfe-core = { workspace = true }
|
|
wfe-containerd-protos = { path = "../wfe-containerd-protos" }
|
|
tokio = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
tracing = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tonic = "0.14"
|
|
tower = "0.5"
|
|
hyper-util = { version = "0.1", features = ["tokio"] }
|
|
prost-types = "0.14"
|
|
uuid = { version = "1", features = ["v4"] }
|
|
libc = "0.2"
|
|
|
|
[dev-dependencies]
|
|
pretty_assertions = { workspace = true }
|
|
tokio = { workspace = true, features = ["test-util"] }
|
|
tempfile = { workspace = true }
|
|
tokio-util = "0.7"
|