2

我有一个名为 myImageName:latest 的 docker 映像,我在我的应用程序中使用它。我想为我的应用程序编写一个集成测试,因此我想使用 TestContainer 包。当我运行以下简单测试时:

@Testcontainers
public class myIntegrationTest{

    @Container
    private GenericContainer container =
    new GenericContainer<>(DockerImageName.parse("myImageName:latest"))
    .withExposedPorts(8080);

    
    @Test
    public void myIntegrationTestName() throws Exception{
        assertTrue(container.isRunning());
    }

}

我收到以下错误(完整堆栈跟踪):

18:30:58.741 [main] 错误 org.testcontainers.dockerclient.DockerClientProviderStrategy - 找不到有效的 Docker 环境。请检查配置。尝试的配置是:2 18:30:58.746 [main] 错误 org.testcontainers.dockerclient.DockerClientProviderStrategy - UnixSocketClientProviderStrategy:失败,出现异常 NoClassDefFoundError(无法初始化类 org.testcontainers.shaded.com.github.dockerjava.core.DefaultObjectMapperHolder)18 :30:58.747 [main] 错误 org.testcontainers.dockerclient.DockerClientProviderStrategy - 由于未找到有效配置,因此无法继续执行

java.lang.IllegalStateException:找不到有效的 Docker 环境。请在 org.testcontainers 的 java.base/java.util.Optional.orElseThrow(Optional.java:408) 的 org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$7(DockerClientProviderStrategy.java:215) 查看日志并检查配置。 dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:207) at org.testcontainers.DockerClientFactory.getOrInitializeStrategy(DockerClientFactory.java:136) at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:178) at org.testcontainers.LazyDockerClient.getDockerClient (LazyDockerClient.java:14) 在 org.testcontainers.LazyDockerClient.authConfig(LazyDockerClient.java:12) 在 org.testcontainers.containers.GenericContainer.start(GenericContainer.java:310) 在 org.

  • 码头工人 v20.10.5
  • junit v5.7
  • 测试容器 v1.15.3
  • JDK v11.0.10

先感谢您!

4

2 回答 2

2

我在 pom.xml 中添加了以下依赖项:

<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-annotations</artifactId>
 <version>2.10.5</version>
</dependency>

这个包缺少类:

DefaultObjectMapperHolder

于 2021-05-13T10:00:18.723 回答
0

使用 Rancher 桌面时,我遇到了类似的异常。为了检查 docker 是否运行正常,我跑了

$ docker compose ls
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

有了这些信息,我得出结论,rancher 桌面 docker 环境存在问题。在重新启动牧场主桌面时,错误消失了。

于 2022-02-24T09:40:52.587 回答