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
相关产品推荐
相关产品推荐

