java - Docker for Windows:我们的开发设置从 3.0.0+ 版本开始停止工作
问题描述
本周我尝试将 Docker for Windows 更新到 3.1.0(跳过 3.0.0),但随着这次更新,我们的开发设置停止工作。
描述我们设置的一些关键点
- Docker 在 WSL2 上运行。
- 我们有一个 docker-compose.yml 用于设置基础设施。
- 这包括 Oracle 数据库 19.3 和 JBoss EAP 7.3 (JDK 11)。
- JBoss 服务在 docker-compose.yml 中公开和映射端口 8080(webserver)、8787(Java 远程调试)和 9990(JBoss 管理 API)。
- 我们使用 IntelliJ 进行开发,并使用上述端口配置了“JBoss 运行配置”。IntelliJ 将通过端口 9990 上的 JBoss 管理 API 按需编译和部署应用程序。
问题
提到的“JBoss 运行配置”是此设置的一部分,它在 Docker for Windows 3.0.0+ 下停止工作。似乎 IntelliJ 无法再连接到这些端口,导致“localhost:9990”上的连接超时错误。在 2.5.x 和更早的版本中,我们没有任何问题,我在 3.0.0 和 3.1.0 上都进行了测试,但都没有成功。为了验证,我卸载了 Docker 并再次安装了 2.5.x 版本,它又开始工作了。因此,为了发生这种情况,Docker for Windows 中一定发生了一些变化。
编辑:我应该提到问题似乎主要是 JBoss 服务。oracle 数据库及其端口映射有效,可以从任何数据库客户端连接。JBoss 服务的容器日志也没有报告任何问题,而且该服务似乎启动时没有问题。
问题
- 有人提示在哪里搜索或如何调试此问题?
- 有没有经历过类似的事情?
- 有人知道从 Docker for Windows 3.0.0+ 开始引入了哪些重大变化吗?
解决方案
经过多方面的尝试和错误,我终于找到了问题所在。网络和端口映射按预期工作。问题是 IntelliJ 委托给的 JBoss CLI 的连接超时,默认超时值为 5 秒。
为什么升级到 Docker Desktop 3+ 后这个超时是一个问题,我不知道。但在我看来,在新版本的 Docker 中,某处的性能下降如此之大,以至于每次都超过 5 秒的超时,因此总是出现错误。
所以我目前的解决方案,即使它闻起来像一个解决方法,只是简单地为 IntelliJ 中的超时设置一个更高的值。
如何增加此超时?
- 在 IntelliJ 中打开菜单
Help > Edit Custom Properties...
,打开idea.properties
文件,您可以在其中指定 IntelliJ 启动选项 - 将属性添加
idea.wildfly.client.timeout=30000
到此文件 - 重启 IntelliJ
推荐阅读
- excel - 有没有办法将 concat 公式应用于带有 worksheet_change 的范围?
- ios - 来自 ADOverlayContainer 的 OverlayContainer 的 iOS Podfile 问题
- javascript - 如何使用 JavaScript 和 HTML 从 REST API 中选择特定数据
- css - 如何使背景颜色扩展到我的分数列而不影响我的中心列?
- java - 遍历数组的边缘成员时数组索引超出范围
- python - Beautifulsoup requests.get() 从指定的 url 重定向
- java - JAVA jps 命令什么也不显示
- python - 安装beautifulsoup4库和pip时终端中的权限被拒绝
- sql - 为 SQL Server 连接检查 TLS1.2
- r - 如何正确注释我的森林图,以便在它们各自的标签旁边显示我的置信区间?