{"record":{"id":"13a7e36db83a0ede","repo":"quarkusio/quarkus","slug":"docker-compose-not-found-is-composeexecutable","errorCode":null,"errorMessage":"Docker Compose not found. Is ${composeExecutable} on the PATH?","messagePattern":"Docker Compose not found\\. Is (.+?) on the PATH\\?","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"critical","filePath":"extensions/devservices/deployment/src/main/java/io/quarkus/devservices/deployment/compose/ComposeRunner.java","lineNumber":85,"sourceCode":"    }\n\n    /**\n     * Set the profiles to use when running the command.\n     *\n     * @param profiles the profiles\n     * @return this\n     */\n    public ComposeRunner withProfiles(List<String> profiles) {\n        this.profiles = Collections.unmodifiableList(profiles);\n        return this;\n    }\n\n    /**\n     * Run the compose command.\n     */\n    public void run() {\n        if (!CommandLine.executableExists(composeExecutable)) {\n            throw new RuntimeException(\"Docker Compose not found. Is \" + composeExecutable + \" on the PATH?\");\n        }\n\n        if (composeFiles.isEmpty()) {\n            LOG.info(\"No compose files specified\");\n            return;\n        }\n\n        LOG.infov(\"Compose is running command: {0} {1}\", composeExecutable, cmd);\n\n        final File pwd = composeFiles.get(0).getAbsoluteFile().getParentFile().getAbsoluteFile();\n\n        ProcessBuilder.newBuilder(composeExecutable)\n                .directory(pwd.toPath())\n                .arguments(cmd.split(\"\\\\s+\"))\n                .modifyEnvironment(env -> {\n                    env.putAll(additionalEnvVars);\n\n                    env.put(PROJECT_NAME_ENV, identifier);","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/devservices/deployment/src/main/java/io/quarkus/devservices/deployment/compose/ComposeRunner.java#L67-L103","documentation":"ComposeRunner.run() first verifies the configured compose executable exists on the PATH via CommandLine.executableExists(). If not found it throws RuntimeException(\"Docker Compose not found. Is <composeExecutable> on the PATH?\"), aborting the DevServices startup that depends on compose.","triggerScenarios":"Starting an application whose DevServices uses Docker Compose when neither 'docker compose' nor 'docker-compose' is installed; or when composeExecutable is set to a custom binary name/path that is not resolvable.","commonSituations":"Fresh machines or CI containers with Docker Compose plugin missing; minimal Docker installs (only daemon, no compose plugin); custom composeExecutable like 'podman-compose' not installed or not on PATH in the build environment.","solutions":["Install Docker Compose (plugin: docker-compose-plugin / 'docker compose' subcommand, or standalone docker-compose) and ensure it is on PATH","Verify with 'docker compose version' (or 'docker-compose version') in the same shell/environment running Quarkus","If using a custom executable, set the composeExecutable configuration to an absolute path or install the named binary","Use Podman Compose alternatives that expose a docker-compatible compose command and point composeExecutable at it","Set quarkus.devservices.enabled=false only if you supply your own infrastructure instead"],"exampleFix":"# before\nquarkus.devservices.compose.executable=compose  # binary not installed\n# after (after installing docker compose plugin)\nquarkus.devservices.compose.executable=docker  # resolved via 'docker compose'\n# or simply ensure 'docker compose version' works before starting the app","handlingStrategy":"fallback","validationCode":"// preflight before starting the app\nfor (String exe : List.of(\"docker\", \"docker\")) {\n    if (new ProcessBuilder(exe, \"compose\", \"version\").start().waitFor() != 0)\n        throw new IllegalStateException(\"Docker Compose plugin required\");\n}","typeGuard":"static boolean composeAvailable(String executable) {\n    return CommandLine.executableExists(executable);\n}","tryCatchPattern":"try {\n    app.start();\n} catch (RuntimeException e) {\n    if (e.getMessage() != null && e.getMessage().contains(\"Docker Compose not found\")) {\n        installComposeOrDisableDevServices();\n    } else throw e;\n}","preventionTips":["Install docker-compose-plugin in dev machines and CI images","Run 'docker compose version' as a CI preflight step","Point composeExecutable at an absolute path for non-standard installs","Set quarkus.devservices.enabled=false only when external infra is guaranteed"],"tags":["docker-compose","devservices","path","missing-executable"],"backgroundTag":"executable-not-on-path","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}