首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将Quarkus中的测试容器连接到DevServices的Docker网络?

在Quarkus中,可以使用Testcontainers库来连接测试容器到DevServices的Docker网络。Testcontainers是一个Java库,用于在测试中启动和管理Docker容器。

要将Quarkus中的测试容器连接到DevServices的Docker网络,可以按照以下步骤进行操作:

  1. 首先,确保已经在Quarkus项目的pom.xml文件中添加了Testcontainers的依赖。可以使用以下代码片段将其添加到pom.xml文件中:
代码语言:txt
复制
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>testcontainers</artifactId>
    <version>1.15.3</version>
    <scope>test</scope>
</dependency>
  1. 在测试类中,使用@QuarkusTestResource注解来指定要使用的DevServices资源。例如,如果要使用PostgreSQL数据库,可以创建一个自定义的测试资源类,如下所示:
代码语言:txt
复制
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
import org.testcontainers.containers.PostgreSQLContainer;

import java.util.Collections;
import java.util.Map;

public class PostgresTestResource implements QuarkusTestResourceLifecycleManager {

    private static final PostgreSQLContainer<?> POSTGRES_CONTAINER = new PostgreSQLContainer<>("postgres:13.3");

    @Override
    public Map<String, String> start() {
        POSTGRES_CONTAINER.start();
        return Collections.singletonMap("quarkus.datasource.url", POSTGRES_CONTAINER.getJdbcUrl());
    }

    @Override
    public void stop() {
        POSTGRES_CONTAINER.stop();
    }
}
  1. 在测试类中,使用@QuarkusTest注解来标记测试类,并使用@Testcontainers注解来启用Testcontainers。同时,使用@TestResource注解来指定要使用的DevServices资源类。例如:
代码语言:txt
复制
import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import org.testcontainers.junit.jupiter.Testcontainers;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.transaction.Transactional;

import static org.junit.jupiter.api.Assertions.assertEquals;

@QuarkusTest
@Testcontainers
@QuarkusTestResource(PostgresTestResource.class)
public class MyServiceTest {

    @Inject
    EntityManager entityManager;

    @Test
    @Transactional
    public void testSomething() {
        // 在这里编写测试逻辑
    }
}

在上述示例中,我们使用了一个自定义的PostgresTestResource类来启动和管理一个PostgreSQL容器,并将其连接到Quarkus的DevServices网络中。然后,在测试类中,我们使用@QuarkusTestResource注解来指定要使用的DevServices资源类。

这样,测试容器就可以连接到DevServices的Docker网络中,以便在测试中使用。你可以根据需要使用不同的Testcontainers资源,如MySQL、MongoDB等。

请注意,以上示例中的代码仅供参考,具体的实现方式可能因项目的不同而有所变化。你可以根据自己的需求进行适当的调整和修改。

推荐的腾讯云相关产品:腾讯云容器服务(Tencent Kubernetes Engine,TKE),腾讯云数据库(TencentDB),腾讯云云服务器(CVM),腾讯云对象存储(COS)等。你可以访问腾讯云官方网站获取更多关于这些产品的详细信息和文档。

希望以上信息能对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Prometehus自动发现Docker Swarm Overlay网络中的容器

介绍如何使用Prometheus的dns service discovery机制,自动发现并抓取Docker swarm overlay网络中的容器所提供的指标。...解决思路如下: 使用《一种生产环境Docker Overlay Network的配置方案》提到的方法配置overlay网络,并且把docker service、stack、standalone container...把Prometheus也挂到这个overlay网络里。 使用Prometheus的DNS service discovery机制,半自动的发现容器。...第一步:构建overlay network 根据《一种生产环境Docker Overlay Network的配置方案》里提到的方法,创建Docker swarm,和一个overlay网络,名字叫做test-overlay...tasks.mock是Docker自动为docker service mock创建的,而standalone-mock就是容器名。

1K10

quarkus实战之二:应用的创建、构建、部署

我们只需要执行maven命令即可,在命令中带些参数,这些参数是给quarkus的maven插件用的 quarkus的maven插件会下载一个docker镜像(ubi-quarkus-native-image...) 然后用此镜像创建一个容器 容器中有GraalVM环境,用此环境将制作二进制可执行文件 制作成功后,容器被销毁 上面步骤虽多,我们的实际操作却很简单,只有第一步,执行如下命令即可: mvn clean...docker镜像,如果您之前有过这方面的经历,应该记得下面熟悉的步骤: 准备一个集成了java环境的镜像作为基础镜像 编译java工程,得到jar、class、资源文件等 将jar、class、资源文件这些复制到基础镜像中...贴心的quarkus,把Dockerfile都为我们准备好了,就是下图左侧红框中那个,右侧是其内容,就那么寥寥几行,核心是复制那个二进制文件: 执行下面的命令,轻松完成镜像制作: docker build...:0.0.1 启动依旧超快,0.016秒,四舍五入就是瞬间了: 浏览器访问服务,一切正常: 因为启动命令中添加了–rm参数,因此,用ctrl+C退出控制台后,容器会被彻底清理掉 镜像bolingcavalry

2.1K50
  • Quarkus经GraalVM native-image编译后启动只需0.07秒(9)

    ,将目录添加到GRAALVM_HOME环境变量中即可,如: 最终quarkus的maven编译插件会帮我们生成一条这样的graalvm编译指令,如: F:\runtime\graalvm-ce-java8...集成graalvm编译环境的所有内容了,但是graalvm在windows系统下的编译并不友好,博主尝试过很多方法,包括通过docker容器挂载编译,都宣告失败了,所以如果你也有同样的问题,看下我们的异常是否一样...配置copy进系统里,同镜像里的环境编译成native-image,然后第二段,基于小红帽的基础镜像运行环境,将构建的产物copy进去,如此即完成了docker容器的构建。...不过这样的方式构建,所有的依赖都是即时下载的,对本地网络要求会比较高,整体编译时长会比较长。网络稍微一抖动就会编译失败,所以最好在pom里配置下国内比较快的maven仓库,比如阿里云的maven仓库。...可能遇到的问题,graalvm是在编译时初始化的,所有有些依赖如果只能运行时初始化,可以在quarkus中添加如下的配置: quarkus.native.additional-build-args=--

    45350

    基于 Stork 和 Quarkus 扩展 Kubernetes 服务发现

    在传统的单体架构中,应用程序已经通过静态主机名、IP 地址和端口知道后端服务的存在位置。IT运维团队为服务可靠性和系统稳定性维护静态配置。...自从微服务开始在分布式网络系统中运行以来,其维护发生了显著变化。之所以发生这种变化,是因为微服务需要与多个后端服务进行通信,以提高负载均衡和服务弹性。...随着服务应用程序被容器化并放置在 Kubernetes 上,微服务拓扑变得更加复杂。由于 Kubernetes 可以随时终止和重建应用程序容器,因此应用程序无法预先知道静态信息。...幸运的是,Quarkus 使开发人员能够将 Stork 的功能插入 Java 应用程序。本文演示了 Quarkus 如何允许开发人员将 Stork 的功能添加至 Java 应用程序中。...开发人员在继续在 Quarkus 中开发反应式编程的同时,还可以使用实时编码获得更好的开发人员体验。 有关 Quarkus 的更多信息,大家可访问 Quarkus 指南和实践。

    2.3K90

    quarkus实战之一:准备工作

    2022年春季推出的又一个精品原创系列,作者将自己对java的热爱渗透到每段文字和每行代码中,全系列秉承欣宸一贯的知识+实战风格,既有知识普及、更有实际操作,在涉及基础知识之处更有深入分析,尽最大努力,...将自己眼中云端的java的样子呈现出来 引子 作为一名Java程序员,如何适应目前的容器化趋势?...重启,并且启动时间也会变长,相比之下,集群中golang应用大多配置128M内存限制,我只能羡慕了 另外还有诸多疑问也困扰着我:java技术栈内已有完整的注册发现、调用链追踪、指标监控、配置等技术实现,...内容简洁:超音速、亚原子的JAVA 五大特点分别如下: 容器优先 命令式和响应式 社区和标准的支持 kubernetes原生 对开发者友好 来看看官网给出的对比数据,如下图,如果使用的是quarkus...框架和GraalVM虚拟机,在内存方面对比传统框架有一个数量级的优势,而响应时间差距已不止一个数量级: 容器化的路上,选择quarkus是个不错的选择 本篇概览 作为《quarkus实战》系列的开篇,

    70130

    支持JDK19虚拟线程的web框架,之二:完整开发一个支持虚拟线程的quarkus应用

    docker镜像,一行docker run命令就能开启虚拟线程,还要在Dockerfile上做点事情(quarkus提供的基础镜像中没有JDK19版本,另外启动命令也要调整) 上述这些都是本文的重点...点击下图红色箭头中指向的按钮,即可在IDEA中运行应用 浏览器访问地址:http://localhost:8080/vt/persons/1 ,如下图,符合预期 在前文中,咱们是在docker上运行应用的...,另外在实际场景中应用运行在docker或者k8s环境也是普遍情况,所以接下来一起实战将用做成docker镜像并验证 构建镜像 在创建工程的时候,IDEA就用quarkus模板自动创建了多个Dockerfile...镜像制作成功,控制台输出如下图 如果您有hub.docker.com的账号,也可以像我一样推送到公共仓库,方便大家使用 异常测试(没有enable-preview参数会怎么样?)...瞎猜是没用的,还是试试吧,在启动参数中删除–enable-preview,如下图,再重新构建镜像 像前文那样运行容器(再次提醒,确保数据库是正常的),再在浏览器访问http://localhost:8080

    91220

    Kubernetes 上 Java 应用的最佳实践

    幸运的是,有一些工具可以优化在容器中运行的 Java 应用程序的内存配置。...我们还可以自定义 Kubernetes 探针的其他方面。假设我们的应用程序连接到外部系统,但我们没有在我们的 readiness 探针中验证该集成​​。它并不重要,不会对我们的运营状态产生直接影响。...例如,Quarkus 允许我们用 @QuarkusIntegrationTest 注释测试。结合 Quarkus 容器构建功能,它是一个非常强大的解决方案。...然后我们使用 RestClientBuilder 创建一个客户端并调用在容器上启动的服务。测试类的名字不是偶然的。为了被自动检测为集成测试,它有 IT 后缀。...当我们在构建期间使用 mvn clean verify 命令运行测试时,我们的测试在构建容器镜像后执行。 该 Quarkus 功能基于 Testcontainers 框架。

    21410

    quarkus数据库篇之二:无需数据库也能运行增删改查(dev模式)

    ,增删改查啥都行,和有数据库的时候没啥区别 看到这里,经验丰富的您应该会觉得:既然有docker,那么用docker run装一个数据库不就行了吗,和quarkus工具有啥关系?...镜像,命令是docker pull testcontainers/ryuk:0.3.3(当您看到此文是,tag可能不是0.3.3了,你可以从错误信息中确定您那边的tag) 如果您有docker账号,执行命令...也会通过docker为应用把数据库备好,让应用顺利启动、连接、执行初始化SQL 执行单元测试 从上述控制台信息可见,目前的控制条已经处于命令行交互模式,先输入o开启测试日志输出开关 然后再输入r开始执行单元测试...,结果发现单元测试对数据的任何写操作,都不会改变上图表中的内容,这和使用自己的数据库是完全不同的,上一篇文章中,咱们执行完单元测试后,写操作的结果在数据库中是可以查到的 目前还没有查到上述问题的原因,...,单元测试的读写功能是正常的,也就是说单元测试中,数据发生变化后程序可以读取到变化后的数据,只是我们用工具看不到变化而已(官方文档也没有提及用工具去连接那个表,应该是不推荐这么做) 至此,quarkus

    77050

    云原生时代高性能Java框架—Quarkus(二)

    本文将主要指向Quarkus的“亮点”——本地化应用程序。 以下是本文的两个目标: 将Quarkus开发的Java应用程序编译成本地可执行文件。 将本地可执行文件打包到容器中。...容器化本地可执行文件 添加配置 我们要将生成的本地可执行文件进行容器化,所以需要考虑到本地可执行文件对环境的兼容问题,在这里所生成的本地可执行文件的格式应该和docker镜像中的环境兼容了,而不是我们的本机环境...运行如下命令启动容器: docker run -i --rm -p 8080:8080 quarkus-quickstart/getting-started ---- 测试本地可执行文件 打开项目中的测试文件夹...注意:由于我们上一步中在项目的配置文件中添加了quarkus.native.container-runtime=docker,现在我们需要去掉,否则生成的可执行文件格式可能和你本机的格式不兼容。...总结 本文主要介绍了Quarkus框架的本地化相关操作,我们具体介绍了如何将Quarkus项目编译成本地可执行文件,随后又演示了如何将生成的可执行文件打包成Docker镜像,最后我们演示了如何以本地可执行文件的形式测试业务代码

    1.3K30

    Docker - 如何使用SSH连接到正在运行中的容器

    以下是本篇文章中的几个重要步骤: 如何安装SSH 在现有容器上运行SSH的方法 使用SSH连接到其他运行中容器的方法 如何安装SSH 如果你已经有一个正在运行的docker容器,并且你想通过SSH...下面教你如何打开22端口: 从容器中退出 使用以下命令提交docker容器的镜像:docker commit 使用以下命令运行一个新的容器...> / bin / bash 使用SSH连接到其他运行中容器的方法 按照上述步骤在现有容器上安装了SSH并打开了22端口之后,请执行以下操作以从另一个容器测试SSH连接: 按照以上步骤安装SSH...命令测试SSH连接: scp /tmp/somefile.txt docker容器的用户名>@docker容器的IP>:/tmp 执行上面的命令后会将文件发送到其他docker容器的/tmp...文件夹 我希望这篇文章能够帮助到那些想要使用SSH将一个Docker容器连接到其他Docker容器的读者。

    5.4K70

    Sentry 开发者贡献指南 - 测试技巧

    本节旨在记录一些 sentry 特定的帮助程序, 并提供有关在构建新功能时应考虑包括哪些类型的测试的指南。 获取设置 验收和 python 测试需要一组有效的 devservices。...sentry devservices down # 打开带有 test 前缀的服务以使用单独的容器和卷 sentry devservices up --project test # 验证测试容器是否正确出现...docker ps --format '{{.Names}}' # 稍后当您完成运行测试并想再次运行本地服务器时 sentry devservices down --project test &&...sentry devservices up 使用 --project 选项时,您可以确认哪些容器正在运行 docker ps。...每个正在运行的容器都应该以 test_ 为前缀。有关管理服务的更多信息,请参阅 devservices docs 部分。

    1.7K50

    Docker 之容器间通信配置

    我们安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。...: None:该模式将容器放置在它自己的网络栈中,但是并不进行任何配置。...实际上,该模式关闭了容器的网络功能,类似于会换地址,在以下两种情况下是有用的:容器并不需要网络(例如只需要写磁盘卷的批处理任务) Host:相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立的...该模式不够灵活,容易出现端口冲突问题 Bridge:相当于Vmware中的NAT模式,容器使用独立的network Namespace,并且连接到docker0虚拟网卡(默认模式)。...~]# docker network connect my_net2 test4 # 将test4连接到my_net2网络 #同box2和box3的ping测试,若没有将box4连接到box5所在的网络

    5.1K30

    关于Docker中 容器镜像管理,数据卷网络,本地仓库,容器监控的一些笔记

    博文内容涉及: docker 镜像管理 docker 容器管理 docker数据卷使用 自定义镜像Dockerfile编写 docker 网络管理(容器互联) docker本地库(registry,harbor...那现实场景中,我们要多管理容器和镜像,要怎么办,不能一个镜像放到一个U盘里吧,这里我们 需要一个 runtime(运行时),即用于管理容器的一种软件,比如 runc lxc gvisor kata这些,...宿主机可以看到容器中的进程 ┌──[root@liruilongs.github.io]-[~/docker] └─$ ps aux | grep -v grep | grep mysqld polkitd...Docker用户几乎永远不会和引导文件交互。实际上,当一个容器启动.后,它将会被移到内存中,而引导文件系统则会被卸载(unmount),以留出更多的内存供initrd磁盘镜像使用。...我们想在Docker中运行的程序就是在这个读写层中执行的。 当Docker第一次启动一个容器时,初始的读写层是空的。当文件系统发生变化时,这些变化都会应用到这一层上。

    2.6K10

    Red Hat 开源 Quarkus 1.0:Java 已为云原生时代做好了准备

    现在使用的 JVM 是假设 JVM 包含了“一次编码随处部署所需”的代码。然而,在容器环境中,可移植性问题是由 Docker 容器和 Kubernetes 来解决的。...它还包含了用于观察服务间流量模式的 MicroProfile OpenTracing ,以及用于将 JVM、Quarkus 运行时和自定义应用程序度量指标暴露给诸如 Prometheus 之类容器监控平台的...然而,在 IBM 收购 Red Hat 之后,Quarkus 很有可能会吸引 Java 社区中某些子项目的注意,随着 Java 以开源的形式出现,这方面的创新速度正在加快。...当然,所面临的挑战是如何在创新和所有 Java 变体的向后兼容性之间取得平衡。 在构建容器化应用程序时,很显然会有很多编程语言选项。...然而,Little 认为大多数企业开发人员更愿意使用他们已经了解的 Java 语言来构建容器化的应用程序。

    1.4K30

    支持JDK19虚拟线程的web框架,中篇:完整开发一个支持虚拟线程的quarkus应用

    docker镜像,一行docker run命令就能开启虚拟线程,还要在Dockerfile上做点事情(quarkus提供的基础镜像中没有JDK19版本,另外启动命令也要调整) 上述这些都是本文的重点...点击下图红色箭头中指向的按钮,即可在IDEA中运行应用 浏览器访问地址:http://localhost:8080/vt/persons/1 ,如下图,符合预期 在前文中,咱们是在docker上运行应用的...,另外在实际场景中应用运行在docker或者k8s环境也是普遍情况,所以接下来一起实战将用做成docker镜像并验证 构建镜像 在创建工程的时候,IDEA就用quarkus模板自动创建了多个Dockerfile...镜像制作成功,控制台输出如下图 如果您有hub.docker.com的账号,也可以像我一样推送到公共仓库,方便大家使用 异常测试(没有enable-preview参数会怎么样?)...瞎猜是没用的,还是试试吧,在启动参数中删除–enable-preview,如下图,再重新构建镜像 像前文那样运行容器(再次提醒,确保数据库是正常的),再在浏览器访问http://localhost:8080

    1K20

    Sentry 开发者贡献指南 - 后端服务(PythonGoRustNodeJS)

    内容整理自官方开发文档 服务管理 (devservices) Sentry 为 Docker 提供了一个抽象,以在开发中运行所需的服务,称为 devservices。...# psql docker exec -it sentry_postgres psql -U postgres 移除容器状态 如果你真的搞砸了你的容器或卷,你可以使用 devservices rm...# 删除与所有服务关联的所有数据(容器、卷和网络) sentry devservices rm 例如,假设我们在进行迁移时设法损坏了 postgres 数据库,并且您想重置 postgres 数据,您可以执行以下操作...: # 删除与单个服务关联的所有数据(容器、卷和网络) sentry devservices rm postgres 端口分配 以下是 Sentry 服务使用的端口或开发设置中 Sentry 服务的任何依赖项的简单列表...Docker for Mac 的 Dashboard UI 显示您正在运行的 docker 容器/开发服务以及分配的端口和启动/停止选项。

    1.6K30

    2020年你将会选择哪个微服务框架?

    因此,当启动spring应用程序时,将在类路径中扫描带注解的类。基于此,实例化并链接到具体对象。这种做法非常灵活且对开发人员很友好,但它可能使得启动过程缓慢并占用大量内存。...Quarkus的目标是通过在容器编排平台中允许更快的启动,较低的内存消耗和近乎即时的扩展来使Java成为Kubernetes中的领先平台。...Quarkus通过使用自定义的Maven插件在编译时而不是在构建时执行尽可能多的工作来达到此目的(在Quarkus中,这也称为编译时启动)。 Quarkus使用了大多数现有的标准技术,而且还支持扩展。...要实现这些框架,我必须查看框架官方文档以及在诸如Stack Overflow之类的平台上搜索信息。 编译应用程序需要多长时间?我已经测试了执行干净构建所需的时间,包括生成Docker映像。...对于GraalVM,这包括生成本机映像的时间。 启动应用程序需要多长时间?在这里,我测试了从运行docker up到应用程序正确响应第一个HTTP请求之间的时间。

    2.8K11
    领券