是否可以设置一个指向多个 mariadb 数据库的测试容器?
Is it possible to set up a test container that points to multiple mariadb databases?
尝试在 quarkus 中进行一些测试。我可以在 quarkus application.properties 文件中设置多个数据库,一切正常。无法在多个数据源上对 运行 进行测试。我可以连接到其中一个,但不能同时连接到两者。像这样:
private static final MariaDBContainer DATABASE =
new MariaDBContainer<>(DockerImageName.parse(DOCKER_IMAGE).asCompatibleSubstituteFor("mariadb"))
.withDatabaseName(FIRST_DB_NAME)
.withUsername(DB_USER)
.withPassword(DB_PASS)
.withDatabaseName(SECOND_DB_NAME)
.withUsername(DB_USER)
.withPassword(DB_PASS);
如果你想要两个数据库服务器,你可以复制你的容器设置:
@Container
static final MariaDBContainer DATABASE_ONE =
new MariaDBContainer<>(DockerImageName.parse("mariadb:10.3.6"))
.withDatabaseName("maindb")
.withUsername("duke")
.withPassword("duke");
@Container
static final MariaDBContainer DATABASE_TWO =
new MariaDBContainer<>(DockerImageName.parse("mariadb:10.3.6"))
.withDatabaseName("seconddb")
.withUsername("duke")
.withPassword("duke");
由于 Testcontainer 在临时端口上启动它们,因此没有冲突。
如果你想在同一个数据库服务器中使用两个数据库,你可以提供一个初始化脚本,让 Testcontainers 在容器启动时执行。使用此脚本,您可以创建第二个数据库:
@Container
static final MariaDBContainer DATABASE =
new MariaDBContainer<>(DockerImageName.parse("mariadb:10.3.6"))
.withDatabaseName("maindb")
.withUsername("duke")
.withPassword("duke")
.withInitScript("CREATE_SECOND_DB.sql");
其中 CREATE_SECOND_DB.sql
在您的类路径中,内容如下:
CREATE OR REPLACE DATABASE seconddb;
还有更多 Testcontainers initialization strategies 可以调整您的容器。
尝试在 quarkus 中进行一些测试。我可以在 quarkus application.properties 文件中设置多个数据库,一切正常。无法在多个数据源上对 运行 进行测试。我可以连接到其中一个,但不能同时连接到两者。像这样:
private static final MariaDBContainer DATABASE =
new MariaDBContainer<>(DockerImageName.parse(DOCKER_IMAGE).asCompatibleSubstituteFor("mariadb"))
.withDatabaseName(FIRST_DB_NAME)
.withUsername(DB_USER)
.withPassword(DB_PASS)
.withDatabaseName(SECOND_DB_NAME)
.withUsername(DB_USER)
.withPassword(DB_PASS);
如果你想要两个数据库服务器,你可以复制你的容器设置:
@Container
static final MariaDBContainer DATABASE_ONE =
new MariaDBContainer<>(DockerImageName.parse("mariadb:10.3.6"))
.withDatabaseName("maindb")
.withUsername("duke")
.withPassword("duke");
@Container
static final MariaDBContainer DATABASE_TWO =
new MariaDBContainer<>(DockerImageName.parse("mariadb:10.3.6"))
.withDatabaseName("seconddb")
.withUsername("duke")
.withPassword("duke");
由于 Testcontainer 在临时端口上启动它们,因此没有冲突。
如果你想在同一个数据库服务器中使用两个数据库,你可以提供一个初始化脚本,让 Testcontainers 在容器启动时执行。使用此脚本,您可以创建第二个数据库:
@Container
static final MariaDBContainer DATABASE =
new MariaDBContainer<>(DockerImageName.parse("mariadb:10.3.6"))
.withDatabaseName("maindb")
.withUsername("duke")
.withPassword("duke")
.withInitScript("CREATE_SECOND_DB.sql");
其中 CREATE_SECOND_DB.sql
在您的类路径中,内容如下:
CREATE OR REPLACE DATABASE seconddb;
还有更多 Testcontainers initialization strategies 可以调整您的容器。