Key斗篷测试容器失败,因为等待URL访问超时(http://localhost:55127/auth应返回HTTP 2



我正在使用Mariadb和Key斗篷测试容器进行集成测试,但是Mariadb容器启动了,但Key斗篷容器无法启动。我正在使用MacBook Pro M1和jAVA 11

代码

public abstract class IntegrationTest {
public static KeycloakContainer keycloakContainer = new KeycloakContainer("jboss/keycloak:15.0.2")
.withRealmImportFile("/test_realm.json");
@Autowired
public TransactionService transactionService;
@Autowired
public PaymentService paymentService;
ObjectMapper mapper = new ObjectMapper()
.registerModule(new JavaTimeModule());;
@LocalServerPort
static int port = 8088;
protected static String authToken;
@BeforeAll
public static void setUp() {
RestAssured.port = port;
RestAssured.baseURI = "http://localhost/";
RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
assertTrue(keycloakContainer.isRunning());
String authServer = keycloakContainer.getAuthServerUrl();
System.out.println("authServer: " + authServer);
authToken = getAccessToken();
System.out.println("authToken: " + authToken);
}
@DynamicPropertySource
static void dynamicPropertySource(DynamicPropertyRegistry dynamicPropertyRegistry) {
MariaDBContainer<?> container = new MariaDBContainer<>("mariadb:10.6.4-focal")
.withDatabaseName("test")
.withUsername("test")
.withPassword("test");
dynamicPropertyRegistry.add("spring.datasource.url", container::getJdbcUrl);
dynamicPropertyRegistry.add("spring.datasource.username", container::getUsername);
dynamicPropertyRegistry.add("spring.datasource.password", container::getPassword);
dynamicPropertyRegistry.add("spring.datasource.driver-class", () -> "org.mariadb.jdbc.Driver");
dynamicPropertyRegistry.add("spring.jpa.database-platform", () -> "org.hibernate.dialect.MariaDBDialect");
dynamicPropertyRegistry.add("keycloak.auth-server-url", keycloakContainer::getAuthServerUrl);
container.start();
keycloakContainer.start();
System.out.println("Containers should be started.");
}

}

IDE日志:

找到了带有本地Unix套接字的Docker环境(unix:///var/run/docker.sock)Docker主机IP地址为localhost已连接到docker:服务器版本:20.10.10API版本:1.41操作系统:Docker Desktop总内存:1988 MB图像名称替换将由以下人员执行:DefaultImageNameSubstitator("ConfigurationFileImageNameSubscriber"one_answers"PrefixingImageNameSubscriptor"的组合)Ryuk已启动-将在JVM退出时监视并终止Testcontainers容器正在检查系统。。。✔︎Docker服务器版本至少应为1.6.0✔︎Docker环境应该有超过2GB的可用磁盘空间正在为图像创建容器:mariadb:10.6.4-本地ID为4cb0ba7707f5cee202ae19aa177b7f2b7dbe5de9366426369935742e45c9f99的起始容器集装箱码头:10.6.4-本地正在启动:4cb0ba7707f5cee202ae19aa177b7f2b7dbe5de9366426369935742e45c9f99正在等待jdbc上的数据库连接可用:mariadb://localhost:55129/sympl使用查询"SELECT 1"容器已启动(JDBC URL:JDBC:mariadb://localhost:55129/sympl)集装箱码头:10.6.4本地启动于PT5.679875S正在为映像创建容器:jboss/keyclope:15.0.2ID为8c8792df10e2da254dd7fe200feeff4a2b756b989aec51897f6a6faca2a7403的起始容器容器jboss/keyclock:15.0.2正在启动:8c8792df10e2da254dd7fe200feeff4a2b756b989aec51897f6afa21a7403/festive_bhaha:等待120秒以获取URL:http://localhost:55131/auth(其中端口55131映射到集装箱端口8080)

之后,它再次尝试重新连接,但在超时完成后失败。

来自码头工人的集装箱日志:

将"admin"添加到"/opt/jboss/keyclope/stalone/configuration/keyclope add user.json",重新启动服务器以加载用户

使用嵌入式H2数据库

================================================

================================================

JBoss引导环境

JBOSS_HOME:/opt/JBOSS/keycloft

JAVA:JAVA

JAVA_OPTS:-服务器-Xms64m-Xmx512m-XX:MetaspaceSize=96M-XX: MaxMetaspaceSize=256m-Djava.net.prpreferPv4Stack=true-Djbos.moduless.system.pkgs=org.jbos.byteman-Djava.awt.headless=true-添加导出=java.base/sun.nio.ch=ALL-UNNAMED-添加导出=jdk.unsupported/sun.mic=ALL-UNNAMED-添加出口=jdk.unssupported/sun.reflect=ALL-UNNAMED

================================================

05:28:07243 INFO[org.jboss.modules](main)jboss modules版本1.11.0最终版本05:28:09744 INFO[org.jboss.msc](main)jboss msc 1.4.12.最终版本05:08:09890 INFO[org/jboss.threads](mainJBoss Threads 2.4.0版最终版本05:28:10814 INFO[org.JBoss.as](MSC服务线程1-2)WFLYSRV0049:Keycloft 15.0.2(WildFly Core15.0.1.最终)开始05:28:11475 INFO[org.jboss.vfs](MSC服务线程1-4)VFS000002:无法清除临时文件的现有内容temp类型的提供程序。启用DEBUG级别日志以查找导致此问题的原因05:28:14209 INFO[org.wildfly.security](服务器服务线程池--20)ELY00001:WildFly Elytron 1.15.3版最终05:28:15640 INFO[org.jboss.as.controller.management已弃用](ServerService线程池--11)WFLYCTL0033:不赞成使用扩展"security",并且可能在将来的版本05:28:16882中不受支持信息[org.jboss.as.controller.management已弃用](控制器引导线程)WFLYCTL0028:处的资源中的属性"安全领域"地址'/core service=管理/管理接口=http接口'已弃用,并且可能在将来的版本中删除。请参阅读取资源描述输出中的属性描述操作以了解有关弃用的更多信息。05:28:17062信息[org.jboss.as.controller.management已弃用](ServerService线程池--23)WFLYCTL0028:位于的资源中的属性"安全领域"住址"/subsystem=understream/server=default server/https listener=https"是已弃用,并且可能在将来的版本中删除。查看属性读取资源描述操作输出中的描述了解更多关于贬损的信息。05:28:18155信息[org.jboss.as.server](控制器引导线程)WFLYSRV0039:创建使用套接字绑定的http管理服务(管理http)05:28:18290 INFO[org.xnio](MSC服务线程1-2)xnio版本3.8.4.最终版本05:28:18332 INFO[org.xnio.nio](MSC服务线程1-2)xnio nio实现版本3.8.4.最终05:28:18589 INFO[org.wildfly.extension.health](服务器服务线程池--36)WFLYHEALTH0001:激活基本健康子系统05:28:18664信息[org.jboss.as.clustering.infinispan](服务器服务线程池-37)WFLYCLINF0001:激活Infinispan子系统。05:28:18689信息[org.jboss.as.security](服务器服务线程池--49)WFLYSEC0002:激活安全子系统05:28:18690 INFO[org.jboss.as.naming](ServerService线程池--46)WFLYNAM0001:激活命名子系统05:28:18666 WARN[org.jboss.as.txn](服务器服务线程Pool-51)WFLYTX0013:/subsystem=事务设置为默认值。这是一个危险适用于运行多个服务器的环境。请确保属性值是唯一的。05:28:18717信息[org.jboss.as.security](MSC业务线程1-4)WFLYSEC0001:当前PicketBox版本=5.0.3.Final-redhat-00007 05:28:18816信息[org.wildfly.extension.metrics](服务器服务线程池--45)WFLYMETRIC0001:激活基本度量子系统05:28:18826信息[org.jboss.as.connector](MSC服务线程1-5)WFLYJCA0009:启动雅加达连接器子系统(WildFly/IonJacamar1.4.27.Final)05:28:18790 INFO[org.wildfly.extension.io](ServerService线程池-38)WFLYIO001:Worker"default"具有根据您的4个可用处理器05:28:18887 INFO[org.jboss.remoting](MSC服务线程1-6)JBoss Remoting 5.0.20.最终05:28:19009INFO[org.jboss.as.naming](MSC服务线程1-1)WFLYNAM0003:启动命名服务05:28:19010信息[org.jboss.as.mail.extension](MSC服务线程1-3)WFLYMAIL0001:绑定邮件会话[java:jboss/mail/Default]05:28:19357信息[org.wildfly.extension.undertow](MSC服务线程1-8)WFLYUT0003:牵引下2.2.5.最终启动05:28:19342信息[org.jboss.as.connector.subsystems.datasources](服务器服务线程池--31)WFLYJCA0004:部署JDBC兼容的驱动程序类org.h2.驱动程序(1.4版)05:28:19398信息[org.jboss.as.connector.deployers.jdbc](MSC服务线程1-8)WFLYJCA0018:已启动驱动程序服务,驱动程序名称为h2 05:28:19477INFO[org.jboss.as.jaxrs](服务器服务线程池-39)WFLYRS0016:RESTEasy版本3.15.1.最终05:28:19667警告[org.wildfly.clustering.web.undertow](服务器服务线程池--52)WFLYCLWEBUT0007:未找到默认服务器的路由提供程序;使用基于静态配置的遗留提供程序05:28:20323信息[org.jboss.as.ejb3](MSC服务线程1-8)WFLYEJB0481:严格池slsb严格最大池使用64(每个类)的最大实例大小,其源自线程工作者池大小。05:28:20323信息[org.jboss.as.ejb3](MSC服务线程1-5)WFLYEJB0482:严格池mdb严格最大池使用的最大实例大小为16(每个类),其是从该主机上的CPU的数量导出的。05:28:20527INFO[org.wildfly.extension.undertow](服务器服务线程池--52)WFLYUT0014:正在为路径创建文件处理程序"/opt/jboss/keyclope/welcome-content",带选项[目录列表:'false',跟随symlink:'false],区分大小写:'true',安全符号链接路径:'[]']05:28:20604信息[org.wildfly.extension.undertow](MSC服务线程1-3)WFLYUT0012:已启动服务器默认服务器。05:28:20615警告[org.wildfly.extension.eltron](MSC服务线程1-1)WFLYELY00023:KeyStore文件'/opt/jboss/keyclop/standalone/configuration/application.keystore'不存在。使用空白。05:28:20648信息[org.wildfly.extension.undertow](MSC服务线程1-3)排队请求。05:28:20651信息[org.wildfly.extension.undertow](MSC服务线程1-3)WFLYUT0018:主机默认主机启动05:28:20669 WARN[org.wildfly.extension.eltron](MSC服务线程1-1)WFLYELY01084:钥匙库/opt/jboss/keyclop/standalone/configuration/application.keystore不是发现,它将在首次使用时自动生成,并带有自签名主机localhost的证书警告:非法的反射访问操作已发生警告:非法的反射访问org.wildfly.extension.elytron.SSL定义(jar:file:/opt/jboss/keyclope/moduless/system/layers/base.org/wildfly/extension/main/wildfly-elytron-integration-15.0.1.Final.jar!/)方法com.sun.net.ssl.internal.ssl.Provider.isFIPS()警告:请考虑向的维护人员报告org.wildfly.extension.elytron.SSL定义警告:使用--非法访问=警告以启用对进一步非法反射访问操作的警告警告:所有非法访问操作都将在将来的版本中被拒绝05:28:21227信息[org.wildfly.extension.undertow](MSC服务线程1-8)WFLYUT0006:在0.0.0.0:8080 05:28:23000上的Undertow HTTP侦听器默认侦听INFO[org.jboss.as.ejb3](MSC服务线程1-7)WFLYEJB0493:雅加达Enterprise Beans子系统暂停完成05:28:23843INFO[org.jboss.as.connector.subsystems.datasources](MSC服务线程1-8)WFLYJCA0001:绑定数据源[java:jboss/datasources/Key斗篷DS]05:28:23843信息[org.jboss.as.connector.subsystems.datasources](MSC服务线程1-5)WFLYJCA0001:绑定数据源[java:jboss/datasources/ExampleDS]05:28:24110 INFO[org.jboss.as.patching](MSC服务线程1-4)WFLYPAT0050:钥匙斗篷累积补丁ID为:基础,一次性补丁包括:none 05:28:24192警告[org.jboss.as.domain.management.security](MSC服务线程1-3)WFLYDM0111:密钥库/opt/jboss/keyclop/standalone/configuration/application.keystore不是发现,它将在首次使用时自动生成,并带有自签名主机localhost的证书05:28:24286信息[org.jboss.as.server.deployment.scanner](MSC服务线程1-7)WFLYDS0013:已启动目录的FileSystemDeploymentService/opt/jboss/keyclope/standalone/deploments 05:28:24309信息[org.jboss.as.server.deployment](MSC服务线程1-1)WFLYSRV0027:开始部署";密钥斗篷服务器.war";(运行时名称:"密钥斗篷服务器.war")05:28:24494信息[org.wildfly.extension.undertow](MSC服务线程1-6)WFLYUT0006:Undertow HTTPS侦听器HTTPS侦听0.0.0.0:8443 05:28:28673INFO[org.infinispan.CONTAINER](服务器服务线程池--54)ISPN000128:Infinispan版本:Infinispan"Corona Extra"11.0.9.最终05:28:29231 INFO[org.infinispan.CONFIG](MSC服务线程1-7)ISPN000152:在没有驱逐策略的情况下配置了钝化选定。只有手动逐出的实体才会被钝化。05:28:29250 INFO[org.infinispan.CONFIG](MSC服务线程1-7)ISPN000152:在没有驱逐策略的情况下配置了钝化选定。只有手动逐出的实体才会被钝化。05:28:29578 INFO[org.infinispan.PERSISTENCE](服务器服务线程池--55)ISPN000556:正在启动用户整理程序'org.wildfly.clustering.infinispan.hmarshaling.jboss.JBossMarshaller'05:28:29581 INFO[org.infinispan.PERSISTENCE](服务器服务线程池--54)ISPN000556:正在启动用户整理程序'org.wildfly.clustering.infinispan.spi.marching.InfispanProtoStreamMarshaller'05:28:30523 INFO[org.jboss.as.clustering.infinispan](服务器服务线程池--54)WFLYCLINF0002:已启动http远程处理连接器ejb容器中的缓存05:28:30675信息[org.jboss.as.clustering.infinispan](服务器服务线程池--54)WFLYCLINF0002:已从密钥斗篷启动offlineClientSessions缓存容器05:28:30675 INFO[org.jboss.as.clustering.infinispan](ServerService线程池--58)WFLYCLINF0002:已启动actionTokens来自密钥斗篷容器的缓存05:28:30675信息[org.jboss.as.clustering.infinispan](服务器服务线程池--61)WFLYCLINF0002:已从密钥斗篷容器启动工作缓存05:28:30686INFO[org.jboss.as.clustering.infinispan](服务器服务线程池--57)WFLYCLINF0002:从密钥斗篷容器05:28:30675 INFO[org.jboss.as.clustering.infinispan](ServerService线程池--62)WFLYCLINF0002:已启动身份验证会话缓存来自密钥斗篷容器05:28:30726信息[org.jboss.as.clustering.infinispan](服务器服务线程池--59)WFLYCLINF0002:已开始从密钥斗篷容器中登录失败缓存05:28:30726 INFO[org.jboss.as.clustering.infinispan](服务器服务线程池--67)WFLYCLINF0002:已从启动客户端会话缓存密钥斗篷容器05:28:30726信息[org.jboss.as.clustering.infinispan](服务器服务线程池--66)WFLYCLINF0002:已从密钥斗篷容器启动offlineSessions缓存05:28:30953 INFO[org.jboss.as.clustering.infinispan](服务器服务线程池--63)WFLYCLINF0002:已从密钥斗篷启动用户缓存容器05:28:30953 INFO[org.jboss.as.clustering.infinispan](ServerService线程池--60)WFLYCLINF0002:已启动领域缓存来自密钥斗篷容器05:28:30956信息[org.jboss.as.clustering.infinispan](服务器服务线程池--65)WFLYCLINF0002:已从密钥斗篷容器启动授权缓存05:28:30959 INFO[org.jboss.as.clustering.infinispan](服务器服务线程池--64)WFLYCLINF0002:已从密钥斗篷启动密钥缓存容器05:28:31726警告[org.jboss.as.server.deployment](MSC服务线程1-7)WFLYSRV0273:通过jboss-deployment-structure.xml不存在。05:28:31803错误[io.understream](MSC服务线程1-6)UT005024:无法注册用于缓存资源管理器的资源更改侦听器,自动缓存资源的无效将不起作用:java.lang.RuntimeException:java.io.IOException:函数不是在执行org.jboss.xnio.nio@3.8.4.Final//org.xnio.nio.WatchServiceFileSystemWatcher.java:75在org.jboss.xnio.nio@3.8.4.Final//org.xnio.nio.NioXnio.createFileSystemWatcher(NioXnio.java:241)在io.undertow.core@2.2.5.Final//io.bundertow.server.handlers.resource.PathResourceManager.registerResourceChangeListener(PathResourceManager.java:262)在org.wildfly.extension.undertow@23.0.2.Final//org.wildfly.extension.undertow.deployment.ServletResourceManager.registerResourceChangeListener(ServletResourceManager.java:117)在io.undertow.core@2.2.5.Final//io.bundertow.server.handlers.resource.CachingResourceManager.(CachingResourceManager.java:64)在org.wildfly.extension.undertow@23.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.createServlet Config(UndertowDeploymentInfoService.java:567)在org.wildfly.extension.undertow@23.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.start(UndertowDeploymentInfoService.java:276)在org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)在org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.exexecute(ServiceControllerImpl.java:1701)在org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)在org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavengRunnable.java:35)在org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutiator.safeRun(EnhancedQueueExecutior.java:1990)在org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)在org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1363)在java.base/java.lang.Thread.run(线程.java:829)由以下原因引起:java.io.IOException:函数未在实现java.base/sun.nio.fs.LinuxWatchService.(LinuxWatchServices.java:64)在java.base/sun.nio.fs.LinuxFileSystem.newWatchService(LinuxFileSystem.java:47)在org.jboss.xnio.nio@3.8.4.Final//org.xnio.nio.WatchServiceFileSystemWatcher.java:73…还有14个

05:28:34143 INFO[org.keycapture.services](服务器服务线程池--63)KC-SERVICES0001:从standalone.xml或domain.xml加载配置05:28:34422 WARN[org.keycapture.common.Profile](ServerService线程池--63)已启用不推荐的功能:upload_scripts 05:28:34423警告[org.keycapture.common.Profile](ServerService线程池--63)已启用预览功能:脚本05:28:34569信息[org.keycapture.url.DefaultHostnameProviderFactory](ServerService线程池--63)前端:,管理员:,后端:05:28:37112信息[org.jboss.as.clustering.infinispan](服务器服务线程池--63)WFLYCLINF0002:已从密钥斗篷容器启动realmRevisions缓存05:28:37162 INFO[org.jboss.as.clustering.infinispan](服务器服务线程池--63)WFLYCLINF0002:已从启动userRevisions缓存密钥斗篷容器05:28:37209信息[org.jboss.as.clustering.infinispan](服务器服务线程池--63)WFLYCLINF0002:已从密钥斗篷开始授权修订缓存集装箱05:28:37214信息[org.keycapture.connections.innispan.DefaultInfinispanConnectionProviderFactory](ServerService线程池--63)节点名称:8c8792df10e2,站点名称:空

Java运行时环境检测到一个致命错误:

pc处的SIGILL(0x4)=0x0000004016607605,pid=343,tid=466

JRE版本:OpenJDK Runtime Environment 18.9(11.0.12+7)(内部版本11.0.12+7-LTS)Java虚拟机:OpenJDK 64位服务器虚拟机18.9(11.0.12+7-TTS,混合模式,共享,分层,压缩oops,g1 gc,linux-amd64)有问题的框架:J 5784 c1 liquibase.exception.ValidationErrors.checkRequiredField(Ljava/lang/String;Ljava/lang/Object;)V(120字节)@0x0000004016607605[0x0000040166075c0+0x0000000000000045]

不会写入任何核心转储。核心转储已被禁用。为了实现堆芯倾倒;ulimit-c无限";在再次启动Java之前

包含详细信息的错误报告文件另存为:/tmp/hs_err_pid343.log编译的方法(c1)35858 6315 2 liquibase.sqlgenerator.core.CreateSequenceGenerator::validate(169字节)堆中的总数[0x00000040166ecb90,0.00000040166ee598]=6664重新定位[0x00000040166ecd08,0000100040166ece38]=304 main代码[0x00000040166ece40,0.00000040166ee0a0]=4704存根代码
[0x000000401 66ee0,0.000000401 66ee130]=144个oops
[0x00000040166 ee130,0.00000040266 ee160]=48元数据
[0x0000040166 ee 160,0.00000040966 ee178]=24个作用域数据
[Ox00000040166 ee178,0.00000040466 ee2a8]=304个作用域pcs
[0x000000401 66 ee2a8,0x00000040168 ee528]=640个依赖项
[0x0000040166ee528,0x000040166ee530]=8个空chk表[0x0000040166ee530,0x000040166ee598]=104无法加载hsdis-amd64.so;库不可加载;PrintAssembly已禁用

如果您想提交错误报告,请访问:https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%208&component=java-11-openjdkqemu:未捕获的目标信号6(中止)-核心转储***JBossAS进程(343)接收到ABRT信号***

但是,当我启动keycloack容器并设置ExposedPort(8080)时

keycloakContainer.setExposedPorts(List.of(8080));
keycloakContainer.start();

容器日志不会引发JVM错误。这里的日志是在暴露8080端口之后

jboss/keycloak映像仅支持linux/amd64架构。请参阅Docker Hub中的标签。

对于您的M1,您有一个arm64处理器,该处理器不受官方Key斗篷图像的支持。使用苹果的Rosetta 2模拟,苹果尽最大努力使amd64图像正常工作,但您的Keycloft容器在启动过程中失败:

Java运行时环境检测到一个致命错误:pc处的SIGILL(0x4)=0x0000004016607605,pid=343,tid=466

您可以使用支持arm64:的社区构建

  • https://github.com/richardjkendall/keycloak-arm
  • https://hub.docker.com/r/mihaibob/keycloak
public static KeycloakContainer keycloakContainer = 
new KeycloakContainer("mihaibob/keycloak:14.0.0")
.withRealmImportFile("/test_realm.json");

您还应该能够在本地构建自己的兼容arm64的Key斗篷Docker镜像。

相关内容

最新更新