问题标签 [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.
java - 是否可以在 DockerComposeContainer 的 docker-compose 文件中使用本地 Docker 映像?
在我的 docker-compose.yaml 文件中,我使用图像“my-service”(在其他可以正常工作的远程图像中)
通常我使用 io.fabric8 docker-maven-plugin 用 maven 构建“my-service”图像。
我的 Dockerfile:
有没有办法使用来自 Testcontainers 的 DockerComposeContainer 让 docker-compose 使用我的本地服务镜像?
这是我的测试设置
目前我收到以下错误消息,因为它正在使用本地图像。
听起来我需要构建用于测试的图像,但我不知道该怎么做。
maven - 带有 docker 容器的 bitbucket 管道
我有一个正在用 Maven 构建的项目。测试用例使用测试容器来启动一个 MS-SQLserver 实例。管道目前正在失败。
我使用的管道图像的原因是:
没有 docker 和 sqlserver 映像。
我的问题是:
我是否使用 java + maven + docker + sqlserver 创建自己的图像并在管道文件中使用它
或者
只是在管道文件中有命令来安装我需要的东西吗?我认为这将是 WRT 构建时间较慢的选项
启用 testcontainers ryuk 时 bitbucket 管道失败的示例:
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')'时它失败了
testcontainers - 测试容器:不同网络之间的通信
我正在尝试在分离的网络上使用容器构建测试,但它们可以相互通信。
测试是用以下内容构建的:
- 带有两个容器(postgres、api 服务器)的“服务器”网络
- 带有一个容器(其他 api 服务器)的“客户端”网络
测试将调用“其他 api 服务器”,但“其他 api 服务器”无法与“第一个 api 服务器”通信......(连接被拒绝)
我怎样才能获得我应该给“其他 api 服务器”以访问“第一个 api 服务器”的好的“主机:端口”?
spring-boot - 如何测试 Gitlab-ci Docker + Spring Boot + Testcontainers + Wkhtmltopdf
我的问题是关于以下问题:
- 我想测试我的 Wkhtmltopdf 服务结构的设置
- 因此我想使用 Gitlab-ci + Docker 和 Gitlab-Runners
- 我使用的服务器框架是 Spring boot
- 我还有另一个 Docker 容器,它也在运行一个小型 Web 服务,可以通过 REST 访问它以从 url 生成 PDF 文件。
- 对于测试,我想使用 Testcontainers + DockerComposeContainer,它使用了一个定义我的测试数据库服务和 PDF 服务的组合文件。
我的问题如下:我不知道在运行测试时 PDF 服务将使用哪个主机来访问 Spring Boot 服务上的网站。
它非常适合spring服务器访问数据库和PDF服务。但我无法让 PDF 服务请求提供的用于生成 PDF 本身的 web url。
我尝试了几种网上推荐的方法,比如
域
等等。在我的本地机器上运行测试似乎没有任何问题,因为 docker 默认 ips 也按预期工作。
请帮助,我无法入睡,但我现在会尝试,当我再次备份并在计算机上时,我愿意提供更多信息。
java - Producer#initTransactions 不适用于 KafkaContainer
我尝试通过事务向 Kafka 发送消息。所以,我使用这段代码:
...
如果我使用本地 Kafka,效果很好。
但是如果我使用 Kafka TestContainers,它会冻结producer.initTransactions()
:
如何配置 KafkaContainer 以处理事务?
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:连接被拒绝
我错过了什么细节?谢谢!
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 来启动容器?
如果是 - 怎么做,或者这里可以使用哪种解决方法?
docker - 配置 Minio 服务器以与 Testcontainers 一起使用
我的应用程序使用Minio进行 S3 兼容的对象存储,我想通过 Testcontainers 在我的集成测试中使用Minio docker 映像。
minio/minio
对于一些非常基本的测试,我使用docker 映像运行 GenericContainer,除了MINIO_ACCESS_KEY
and之外没有任何配置MINIO_SECRET_KEY
。然后我的测试使用 Minio 的Java Client SDK。这些工作正常并且行为与预期一样。
但是对于其他集成测试,我需要在 Mino 中设置单独的用户。据我所知,用户只能使用Admin API添加到 Minio ,没有 Java 客户端,只有minio/mc
docker 镜像(用于服务器mc
的 docker 镜像中没有 CLI )。minio/minio
在命令行上,我可以像这样使用 Admin API:
--interactive --tty
保持容器运行有点小技巧,所以我以后可以运行这样的命令:
使用 Testcontainers,我尝试这样做:
日志显示容器正在启动,但对其执行命令会返回退出代码 126 并声称它处于停止状态:
在摆弄了几个小时之后,我的想法已经不多了。任何人都可以帮忙吗?