Mus*_*afa 2 docker-compose spring-boot-test testcontainers
我正在尝试将 testcontainers 与DockerComposeContainer. 我的 docker-compose.yaml 内容是这样的:
version: '3.8'
services:
postgresql:
image: postgres:13
environment:
POSTGRES_USER: ordering
POSTGRES_PASSWORD: ordering
POSTGRES_DB: ordering
Run Code Online (Sandbox Code Playgroud)
我使用以下 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();
}
Run Code Online (Sandbox Code Playgroud)
这曾经一直有效,直到最近 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
Run Code Online (Sandbox Code Playgroud)
如果我在抛出异常之前在代码中放置一个断点并检查正在运行的 docker 容器,我会看到一个名为 name 的容器l2whc7cxqkzd-postgresql-1。区别在于名称中使用破折号而不是下划线。我想这是 docker-compose 行为在项目标识符分隔符方面的最新变化。
我的问题是,有没有办法将 testcontainers 与 Docker Compose 2.0.0 一起使用?
我的 testcontainers 依赖版本是1.16.0docker 桌面版本 4.1.0。
一种似乎有效的解决方法是将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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2879 次 |
| 最近记录: |