使用Colima替代Docker运行Quarkus项目时遇Docker环境未找到错误
问题:Quarkus Dev模式启动失败(Colima替代Docker场景)
错误日志
执行./gradlew quarkusDev时出现以下错误:
2023-04-18 17:05:57,007 INFO [org.tes.doc.DockerMachineClientProviderStrategy] (build-44) docker-machine executable was not found on PATH ***(masked on purpose) *** 2023-04-18 17:05:57,024 ERROR [org.tes.doc.DockerClientProviderStrategy] (build-44) Could not find a valid Docker environment. Please check configuration. Attempted configurations were: UnixSocketClientProviderStrategy: failed with exception InvalidConfigurationException (Could not find unix domain socket). Root cause NoSuchFileException (/var/run/docker.sock)As no valid configuration was found, execution cannot continue. See https://www.testcontainers.org/on_failure.html for more details. 2023-04-18 17:05:57,282 INFO [org.tes.uti.ImageNameSubstitutor] (build-44) Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor') <====2023-04-18 17:05:57,288 INFO [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure <====2023-04-18 17:05:57,613 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors [error]: Build step io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor#startKafkaDevService threw an exception: java.lang.RuntimeException: java.lang.IllegalStateException: Previous attempts to find a Docker environment failed. Will not retry. Please see logs and check configuration at io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor.startKafkaDevService(DevServicesKafkaProcessor.java:105) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909) at io.quarkus.builder.BuildContext.run(BuildContext.java:281) at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478) at java.base/java.lang.Thread.run(Thread.java:1623) at org.jboss.threads.JBossThread.run(JBossThread.java:501) Caused by: java.lang.IllegalStateException: Previous attempts to find a Docker environment failed. Will not retry. Please see logs and check configuration at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:212) at org.testcontainers.DockerClientFactory.getOrInitializeStrategy(DockerClientFactory.java:150) at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:186) at org.testcontainers.DockerClientFactory$1.getDockerClient(DockerClientFactory.java:104) at com.github.dockerjava.api.DockerClientDelegate.listContainersCmd(DockerClientDelegate.java:188) at io.quarkus.devservices.common.ContainerLocator.lookup(ContainerLocator.java:32) at io.quarkus.devservices.common.ContainerLocator.locateContainer(ContainerLocator.java:45) at io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor.startKafka(DevServicesKafkaProcessor.java:222) at io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor.startKafkaDevService(DevServicesKafkaProcessor.java:95) ... 9 more
环境信息
quarkus --version 2.16.6.Final gradle --version ------------------------------------------------------------ Gradle 8.1 ------------------------------------------------------------ Build time: 2023-04-12 12:07:45 UTC Revision: 40ba32cde9d6daf2b92c39376d2758909dd6b813 Kotlin: 1.8.10 Groovy: 3.0.15 Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021 JVM: 20 (Homebrew 20) OS: Mac OS X 11.6.2 x86_64 colima version colima version 0.5.4 git commit: feef4176f56a7dea487d43689317a9d7fe9de27e runtime: docker arch: x86_64 client: v20.10.22 server: v20.10.20
解决方案
问题根源是Quarkus Dev Services依赖的Testcontainers默认查找/var/run/docker.sock,但Colima的Docker socket路径为~/.colima/default/docker.sock,需要手动指定正确路径:
方法一:临时终端配置
在启动Quarkus前,执行以下命令设置环境变量:
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock export DOCKER_HOST=unix://$HOME/.colima/default/docker.sock
然后重新运行./gradlew quarkusDev
方法二:永久环境配置
将上述环境变量添加到你的shell配置文件(如~/.zshrc或~/.bashrc):
echo 'export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock' >> ~/.zshrc echo 'export DOCKER_HOST=unix://$HOME/.colima/default/docker.sock' >> ~/.zshrc
执行source ~/.zshrc(对应你的shell)使配置生效,之后启动Quarkus无需重复设置。
方法三:Quarkus配置文件指定
在项目的src/main/resources/application.properties中添加以下配置:
quarkus.devservices.docker.host=unix://${user.home}/.colima/default/docker.sock
保存后重新运行./gradlew quarkusDev即可。
内容的提问来源于stack exchange,提问作者Pranav
相关产品推荐
相关产品推荐

