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

Docker部署WildFly+MySQL报错:驱动模块com.mysql缺失

问题原因及解决方案

问题根源

错误提示WFLYJCA0115: Module for driver [com.mysql] or one of it dependencies is missing: [com.mysql],核心原因有两个:

  1. 模块路径与配置不匹配
    Dockerfile中将MySQL驱动复制到了/opt/jboss/wildfly/modules/system/layers/base/com/mysqldatabase/mysql/main/,但my-standalone.xml中驱动配置的模块名是com.mysql。WildFly的模块名严格对应目录结构(com/mysql/main目录对应模块名com.mysql),多出来的mysqldatabase层级导致模块无法被识别。

  2. 缺少模块定义文件module.xml
    WildFly的每个模块必须通过module.xml定义模块名称、依赖和资源文件,你只复制了驱动jar包,没有提供这个关键配置文件,导致WildFly无法加载该模块。

修复步骤

1. 创建module.xml文件

在本地项目目录下创建module.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.9" name="com.mysql">
    <resources>
        <resource-root path="mysql-connector-java-8.0.12.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

2. 修改Dockerfile的驱动复制路径

将原来的驱动复制行替换为:

COPY mysql-connector-java-8.0.12.jar module.xml /opt/jboss/wildfly/modules/system/layers/base/com/mysql/main/

这会将驱动jar和模块配置文件一起复制到正确的模块目录com/mysql/main下,与my-standalone.xml中的模块名com.mysql完全匹配。

3. 重新构建并启动容器

执行以下命令重新构建镜像并启动容器:

docker build -t mein_image_name .
docker run -p 8080:8080 mein_image_name

额外注意事项

  • 若你的MySQL服务不是运行在容器内部(即localhost),需要修改my-standalone.xml中的connection-url:
    • 如果MySQL在宿主机,可使用宿主机IP或host.docker.internal(Docker Desktop环境);
    • 如果使用Docker Compose编排,可直接使用MySQL服务的名称作为主机名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:58:34