more robust way of checking if is in container

This commit is contained in:
erikkaum 2024-07-16 14:14:36 +02:00
parent 713abb7073
commit 9fc54cd91c
2 changed files with 21 additions and 3 deletions

View File

@ -382,10 +382,10 @@ async fn main() -> Result<(), RouterError> {
} }
}; };
// Only send usage stats when TGI is run in docker // Only send usage stats when TGI is run in container
let is_docker = option_env!("DOCKER_LABEL").is_some(); let is_container = usage_stats::is_container();
let user_agent = if !disable_usage_stats && is_docker { let user_agent = if !disable_usage_stats && is_container {
let reduced_args = usage_stats::Args::new( let reduced_args = usage_stats::Args::new(
config.clone(), config.clone(),
tokenizer_class, tokenizer_class,

View File

@ -233,3 +233,21 @@ fn xpu_smi() -> Option<String> {
let output = xpu_smi.replace('\n', "\n "); let output = xpu_smi.replace('\n', "\n ");
Some(output.trim().to_string()) Some(output.trim().to_string())
} }
pub fn is_container() -> io::Result<bool> {
let path = Path::new("/proc/self/cgroup");
let file = File::open(&path)?;
let reader = io::BufReader::new(file);
for line in reader.lines() {
let line = line?;
// Check for common container runtimes
if line.contains("/docker/") || line.contains("/docker-") ||
line.contains("/kubepods/") || line.contains("/kubepods-") ||
line.contains("containerd") || line.contains("crio") ||
line.contains("podman") {
return Ok(true);
}
}
Ok(false)
}