{"record":{"id":"c9e19d91bb070707","repo":"jdx/mise","slug":"container-engine-command-docker-was-not-found-s","errorCode":null,"errorMessage":"container engine command 'docker' was not found; set engine_command explicitly","messagePattern":"container engine command 'docker' was not found; set engine_command explicitly","errorType":"exception","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/system/compose.rs","lineNumber":864,"sourceCode":"            }\n            bail!(\n                \"legacy 'docker-compose' v1 is unsupported; install Docker Compose v2 or set command to a compatible frontend\"\n            );\n        }\n        Ok(None)\n    }\n\n    fn resolved_engine_command(&self) -> Result<Vec<String>> {\n        if !self.engine_command.is_empty() {\n            return resolve_command(&self.engine_command);\n        }\n        if let Some(command) = engine_command_from_compose_command(&self.command) {\n            return resolve_command(command);\n        }\n        if let Some(docker) = crate::file::which(\"docker\") {\n            return Ok(vec![docker.to_string_lossy().to_string()]);\n        }\n        bail!(\"container engine command 'docker' was not found; set engine_command explicitly\")\n    }\n\n    fn configured_engine_command(&self) -> Vec<String> {\n        if !self.engine_command.is_empty() {\n            return self.engine_command.clone();\n        }\n        engine_command_from_compose_command(&self.command)\n            .map(<[String]>::to_vec)\n            .unwrap_or_else(|| vec![\"docker\".to_string()])\n    }\n}\n\nfn compose_plugin_available(docker: &str) -> bool {\n    Command::new(docker)\n        .args([\"compose\", \"version\"])\n        .envs(compose_env())\n        .output()\n        .is_ok_and(|output| output.status.success())","sourceCodeStart":846,"sourceCodeEnd":882,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/system/compose.rs#L846-L882","documentation":"mise resolves the container engine for a [bootstrap.compose.<name>] project in three steps: an explicit engine_command array; the prefix of command before the word \"compose\" (e.g. [\"podman\", \"compose\"] implies podman); finally `docker` found on PATH. This error means all three failed, so mise has no engine to run compose against. The message tells you to short-circuit the lookup by setting engine_command.","triggerScenarios":"Running `mise bootstrap` (or any compose status/apply path) with a [bootstrap.compose.*] entry on a host where `which docker` fails and neither engine_command nor a `compose`-containing command is set in the entry.","commonSituations":"Podman-only hosts (Fedora/RHEL default) with no docker installed; Docker Desktop installed but the mise process runs with a stripped PATH (cron, CI runner, non-login shell); rootless nerdctl setups where the binary is named nerdctl.","solutions":["Add engine_command to the compose entry, e.g. engine_command = [\"podman\"] or [\"nerdctl\"]","Or set command = [\"podman\", \"compose\"] — the prefix before \"compose\" becomes the engine","Or install docker and ensure the docker binary is on the PATH that mise sees","If the engine lives at a nonstandard location, use its absolute path in engine_command"],"exampleFix":"# before (mise.toml)\n[bootstrap.compose.myapp]\nproject_dir = \".\"\n# no engine_command, no docker on PATH -> error\n\n# after\n[bootstrap.compose.myapp]\nproject_dir = \".\"\nengine_command = [\"podman\"]","handlingStrategy":"validation","validationCode":"# before mise bootstrap, assert an engine exists\ncommand -v docker >/dev/null 2>&1 || command -v podman >/dev/null 2>&1 || {\n  echo 'no container engine on PATH; set engine_command in mise.toml' >&2; exit 1\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set engine_command explicitly in every [bootstrap.compose.*] entry used across heterogeneous hosts","Run `mise bootstrap --dry-run` after adding a compose entry to fail before any apply","In CI, install the engine or add its bin dir to PATH in the same job step that runs mise"],"tags":["compose","docker","container-engine","bootstrap","path"],"backgroundTag":"command-not-found","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}