You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus 3.0.0.Beta中Dev Services固定端口配置失效求助

解决Quarkus 3.0.0 Beta Dev Services启动MariaDB固定端口容器崩溃问题

问题场景

Windows 10 + Docker for Windows + Quarkus 3.0.0 Beta环境下,配置Dev Services启动固定端口3456的MariaDB容器时,容器启动后随即崩溃,Quarkus应用无法完成启动,报错Container is removed且无容器日志输出,但手动启动相同镜像和端口的容器可正常运行并连接。

当前配置信息:

application.properties

quarkus.datasource.devservices.enabled=true
quarkus.datasource.devservices.image=mariadb
quarkus.datasource.devservices.port=3456

quarkus.datasource.url=${QUARKUS_DATASOURCE_URL}
quarkus.datasource.db-kind=mariadb
quarkus.datasource.username=root
quarkus.datasource.password=

Gradle构建依赖

org.mariadb.jdbc:mariadb-java-client:3.1.2
io.quarkus:quarkus-jdbc-mariadb:3.0.0.Beta1
io.quarkus.platform:quarkus-bom:3.0.0.Beta1

解决方案

1. 指定兼容的MariaDB镜像版本

使用mariadb默认拉取latest版本,可能与Quarkus Beta版本存在兼容性冲突,明确指定稳定镜像版本:

quarkus.datasource.devservices.image=mariadb:10.11

2. 移除手动配置的数据源URL

Dev Services会自动生成并注入QUARKUS_DATASOURCE_URL变量,手动配置该属性会干扰Dev Services的正常工作逻辑,删除以下配置项:

# 移除此行配置
quarkus.datasource.url=${QUARKUS_DATASOURCE_URL}

3. 配置MariaDB容器允许空密码

部分MariaDB新版本默认禁用空密码登录,需显式添加启动参数允许:

quarkus.datasource.devservices.container-arguments=--skip-password-validation

4. 延长数据库连接等待超时时间

Quarkus默认等待时间可能不足以让MariaDB容器完成初始化,延长超时时间:

quarkus.datasource.devservices.startup-timeout=60

5. 启用Testcontainers日志输出

配置Testcontainers输出容器日志,便于排查崩溃具体原因:
在application.properties中添加:

quarkus.log.category."org.testcontainers".level=DEBUG
quarkus.log.category."org.testcontainers.dockerclient".level=DEBUG

或者启动Quarkus时添加JVM参数:

./gradlew quarkusDev -Dtestcontainers.logging=true

6. 检查端口占用与Docker网络配置

  • 用netstat -ano | findstr :3456验证端口3456未被其他进程占用
  • 确认Docker for Windows使用WSL2后端,避免Hyper-V网络冲突

内容的提问来源于stack exchange,提问作者funkrusher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:17:26