[package]
name = "dockdoe"
version = "0.12.0"
edition = "2024"
rust-version = "1.95"
authors = ["Stefan Schönberger <stefan@sniner.dev>"]
license = "GPL-3.0-or-later"
description = "A single-binary Docker host monitor with an embedded web UI"
repository = "https://github.com/sniner/dockdoe"
homepage = "https://github.com/sniner/dockdoe"
readme = "README.md"
keywords = ["docker", "monitoring", "containers", "metrics", "dashboard"]
categories = ["command-line-utilities", "virtualization", "web-programming::http-server"]

[dependencies]
anyhow = "1.0.102"
axum = { version = "0.8.9", features = ["ws"] }
bollard = "0.21.0"
clap = { version = "4.6.1", features = ["derive", "env"] }
futures-util = "0.3.32"
getrandom = "0.3.4"
hmac = "0.12.1"
hyper-rustls = { version = "0.27", default-features = false, features = ["http1", "tls12"] }
hyper-util = { version = "0.1", features = ["client-legacy", "http1", "tokio"] }
maud = { version = "0.27.0", features = ["axum"] }
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls", "stream"] }
rusqlite = { version = "0.40.1", features = ["bundled"] }
rust-embed = "8.11.0"
rustls = "0.23"
rustls-pemfile = "2"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
sha2 = "0.10.9"
tokio = { version = "1.52.3", features = ["full"] }
# Both already in the tree (axum's ws feature / hyper-rustls); promoted to
# direct deps for the hub→node terminal bridge, which dials the node's exec
# WebSocket itself over our own rustls stream.
tokio-rustls = { version = "0.26", default-features = false }
tokio-tungstenite = { version = "0.29", default-features = false, features = ["handshake"] }
toml = "0.9"
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
webpki-root-certs = "1.0.7"

[profile.release]
# Strip symbols so every build (local, the from-source image, and the
# cross-compiled release binaries) ships small without a separate strip step.
strip = true
