问题标签 [testcontainers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4206 浏览

java - 是否可以在 DockerComposeContainer 的 docker-compose 文件中使用本地 Docker 映像?

在我的 docker-compose.yaml 文件中,我使用图像“my-service”(在其他可以正常工作的远程图像中)

通常我使用 io.fabric8 docker-maven-plugin 用 maven 构建“my-service”图像。

我的 Dockerfile:

有没有办法使用来自 Testcontainers 的 DockerComposeContainer 让 docker-compose 使用我的本地服务镜像?

这是我的测试设置

目前我收到以下错误消息,因为它正在使用本地图像。

听起来我需要构建用于测试的图像,但我不知道该怎么做。

0 投票
2 回答
1030 浏览

maven - 带有 docker 容器的 bitbucket 管道

我有一个正在用 Maven 构建的项目。测试用例使用测试容器来启动一个 MS-SQLserver 实例。管道目前正在失败。

我使用的管道图像的原因是:

没有 docker 和 sqlserver 映像。

我的问题是:

我是否使用 java + maven + docker + sqlserver 创建自己的图像并在管道文件中使用它

或者

只是在管道文件中有命令来安装我需要的东西吗?我认为这将是 WRT 构建时间较慢的选项


启用 testcontainers ryuk 时 bitbucket 管道失败的示例:

0 投票
2 回答
1475 浏览

postgresql - 使用 org.testcontainers 时如何在 docker 容器中包含 postgresql.conf

是否可以通过配置为 postgresql 测试容器提供自定义 postgresql.conf 文件?

我已经包含了 Maven 依赖项

并为 DB url 使用“通过 JDBC URL 方案启动的数据库容器”因此我的 Spring Boot 应用程序中的设置如下:

我需要在 postgresql.conf 中有一个自定义设置。有没有办法将 postgresql.conf 推送到由 testcontainers 启动的 docker 容器?

编辑 1

谢谢@vilkg,我确实知道 TC_INITSCRIPT 脚本选项和 SET 函数:

  • 我想要一个自定义设置,例如 my.key
  • ALTER 系统不适用于您自己的设置,例如:ALTER SYSTEM SET my.key = 'jehe'; 获取错误 无法执行 SQL 命令。返回消息:`错误:无法识别的配置参数“my.key”
  • 我以前尝试过如下 SET 和 ALTER DATABASE

问题是

  • 当 testcontainer 启动 postgres 容器时,我将它传递给一个初始化脚本以运行 url: jdbc:tc:postgresql:10-alpine:///databasename?TC_INITSCRIPT=init_pg.sql
    • 我可以将上面的 SQL 包括在内,它很高兴..
    • 我知道该 secret.key 的设置在此脚本中正常工作,因为它将在 select current_setting('my.key'); 行上失败。如果其他两个被注释掉
    • 我也知道针对 db name test 运行它是正确的,例如:'ALTER DATABASE test' 因为如果我使用不同的名称,它会失败 Testcontainers 自动将应用程序连接到名为 test 的 db 所以以上所有我相信数据库设置得很好一切都应该很好

但是 当我在应用程序代码中使用'current_setting('my.key')'时它失败了

0 投票
0 回答
209 浏览

testcontainers - 测试容器:不同网络之间的通信

我正在尝试在分离的网络上使用容器构建测试,但它们可以相互通信。

测试是用以下内容构建的:

  • 带有两个容器(postgres、api 服务器)的“服务器”网络
  • 带有一个容器(其他 api 服务器)的“客户端”网络

测试将调用“其他 api 服务器”,但“其他 api 服务器”无法与“第一个 api 服务器”通信......(连接被拒绝)

我怎样才能获得我应该给“其他 api 服务器”以访问“第一个 api 服务器”的好的“主机:端口”?

0 投票
0 回答
950 浏览

spring-boot - 如何测试 Gitlab-ci Docker + Spring Boot + Testcontainers + Wkhtmltopdf

我的问题是关于以下问题:

  1. 我想测试我的 Wkhtmltopdf 服务结构的设置
  2. 因此我想使用 Gitlab-ci + Docker 和 Gitlab-Runners
  3. 我使用的服务器框架是 Spring boot
  4. 我还有另一个 Docker 容器,它也在运行一个小型 Web 服务,可以通过 REST 访问它以从 url 生成 PDF 文件。
  5. 对于测试,我想使用 Testcontainers + DockerComposeContainer,它使用了一个定义我的测试数据库服务和 PDF 服务的组合文件。

我的问题如下:我不知道在运行测试时 PDF 服务将使用哪个主机来访问 Spring Boot 服务上的网站。

它非常适合spring服务器访问数据库和PDF服务。但我无法让 PDF 服务请求提供的用于生成 PDF 本身的 web url。

我尝试了几种网上推荐的方法,比如

等等。在我的本地机器上运行测试似乎没有任何问题,因为 docker 默认 ips 也按预期工作。

请帮助,我无法入睡,但我现在会尝试,当我再次备份并在计算机上时,我愿意提供更多信息。

0 投票
2 回答
291 浏览

java - Producer#initTransactions 不适用于 KafkaContainer

我尝试通过事务向 Kafka 发送消息。所以,我使用这段代码:

...

如果我使用本地 Kafka,效果很好。

但是如果我使用 Kafka TestContainers,它会冻结producer.initTransactions()

如何配置 KafkaContainer 以处理事务?

0 投票
1 回答
627 浏览

docker - 无法使用 testcontainer 通过 ssh 连接到 docker

我的任务通过测试中的 ssh 连接到容器。

我有 dokefile:(几乎来自https://docs.docker.com/engine/examples/running_ssh_service/

然后我通过 testcontainer 使用这个 dockerfile:

当我运行测试时,容器成功运行,但我无法通过 ssh 连接。49154 - 值来自sftp.getMappedPort(22)

得到:ssh:连接到主机 localhost 端口 32836:连接被拒绝

我错过了什么细节?谢谢!

0 投票
1 回答
425 浏览

spring-boot - 如何将基于 JDBC URL 的测试容器迁移到 Junit 5

我已经基于 JUnit 4 进行了 spring boot + testcontainers 测试。

例子:

测试属性:

这个测试工作正常,testcontainers 使用 JDBC Url 字符串来启动 MySQL 5.6 的测试容器。

现在我想从项目中删除 junit 4 以支持使用 JUnit 5。

testcontainers + Spring boot 是否能够以类似的方式(通过使用 JDBC URL)但使用 JUnit 5 来​​启动容器?

如果是 - 怎么做,或者这里可以使用哪种解决方法?

0 投票
4 回答
3383 浏览

docker - 配置 Minio 服务器以与 Testcontainers 一起使用

我的应用程序使用Minio进行 S3 兼容的对象存储,我想通过 Testcontainers 在我的集成测试中使用Minio docker 映像

minio/minio对于一些非常基本的测试,我使用docker 映像运行 GenericContainer,除了MINIO_ACCESS_KEYand之外没有任何配置MINIO_SECRET_KEY。然后我的测试使用 Minio 的Java Client SDK。这些工作正常并且行为与预期一样。

但是对于其他集成测试,我需要在 Mino 中设置单独的用户。据我所知,用户只能使用Admin API添加到 Minio ,没有 Java 客户端,只有minio/mcdocker 镜像(用于服务器mc的 docker 镜像中没有 CLI )。minio/minio

在命令行上,我可以像这样使用 Admin API:

--interactive --tty保持容器运行有点小技巧,所以我以后可以运行这样的命令:

使用 Testcontainers,我尝试这样做:

日志显示容器正在启动,但对其执行命令会返回退出代码 126 并声称它处于停止状态:

在摆弄了几个小时之后,我的想法已经不多了。任何人都可以帮忙吗?

0 投票
2 回答
1647 浏览

java - 错误无法连接到 CircleCi 中的 Ryuk

CircleCI有配置。在本地机器上,当你运行 CircleCI 时,一切都会过去。在这种情况下,服务器出现了很多错误,其中之一是

java.lang.IllegalStateException: Can not connect to Ryuk

同时将来在较早启动的容器中连接测试时出现错误test-containers,我认为这是由于连接到Ryuk. 混淆了在本地机器上一切正常而在服务器上一切都失败的事实。