【问题标题】:Testcontainers DockerComposeContainer with Docker Compose version v2.0.0Testcontainers DockerComposeContainer 与 Docker Compose 版本 v2.0.0
【发布时间】:2021-11-29 00:42:23
【问题描述】:

我正在尝试使用带有DockerComposeContainer 的测试容器。我的 docker-compose.yaml 内容是这样的:

version: '3.8'

services:
  postgresql:
    image: postgres:13
    environment:
      POSTGRES_USER: ordering
      POSTGRES_PASSWORD: ordering
      POSTGRES_DB: ordering

我正在使用以下 spring-boot 初始化代码声明容器:

  static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
      DockerComposeContainer<?> environment = new DockerComposeContainer<>(DOCKER_COMPOSE_FILE)
          .withExposedService(DB_SERVICE_NAME, DB_PORT)
          .withLocalCompose(true)
          .start();
}

这在最近更新了 MacOS 上的 docker-desktop 之前一直有效。

现在它抛出以下错误:

Caused by: org.testcontainers.containers.ContainerLaunchException: Aborting attempt to link to container l2whc7cxqkzd_postgresql_1 as it is not running
    at org.testcontainers.containers.GenericContainer.applyConfiguration(GenericContainer.java:812)
    at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:363)
    ... 40 more

如果我在代码抛出异常之前在代码中放置一个断点并检查我正在运行的 docker 容器,我会看到一个名为 l2whc7cxqkzd-postgresql-1 的容器。不同之处在于名称中使用破折号而不是下划线。我猜这是 docker-compose 行为在项目标识符分隔符方面的最新变化。

我的问题是,有没有办法在 Docker Compose 2.0.0 中使用测试容器?

我的 testcontainers 依赖版本是 1.16.0 和 docker 桌面版本 4.1.0。

【问题讨论】:

    标签: docker-compose spring-boot-test testcontainers


    【解决方案1】:

    似乎可行的一种解决方法是将compatibility 选项传递给 docker compose 命令。喜欢:

    static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
        @Override
        public void initialize(ConfigurableApplicationContext applicationContext) {
          DockerComposeContainer<?> environment = new DockerComposeContainer<>(DOCKER_COMPOSE_FILE)
              .withOptions("--compatibility")
              .withExposedService(DB_SERVICE_NAME, DB_PORT)
              .start();
       }
    }
    
    

    【讨论】:

      猜你喜欢
      • 2019-07-09
      • 2016-05-26
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      相关资源
      最近更新 更多