in akd_mysql/src/mysql.rs [571:606]
fn try_dockers() -> std::io::Result<std::process::Output> {
let potential_docker_paths = vec![
"/usr/local/bin/docker",
"/usr/bin/docker",
"/sbin/docker",
"/bin/docker",
"docker",
];
let mut output = Err(std::io::Error::from_raw_os_error(2));
for path in potential_docker_paths {
output = Command::new(path)
// Name filter lists containers containing the name. See https://docs.docker.com/engine/reference/commandline/ps/.
// Therefore, a container with a name like akd-test-dbc would match but would be wrong.
// This regex ensures exact match.
.args(["container", "ls", "-f", "name=^/akd-test-db$"])
.output();
match &output {
Ok(result) => {
if let (Ok(out), Ok(err)) = (
std::str::from_utf8(&result.stdout),
std::str::from_utf8(&result.stderr),
) {
info!("Docker ls output\nSTDOUT: {}\nSTDERR: {}", out, err);
}
break;
}
Err(err) => {
warn!("Docker ls returned error \"{:?}\"\nTrying next possible docker command location", err);
}
}
}
output
}