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

如何在Jenkins构建Docker容器时引入mysql-connector-11.0.19.jar

将mysql-connector集成到Docker容器的正确做法

通过pom.xml添加Maven依赖是完全正确的方向,比手动拷贝jar包更适合自动化构建场景,下面是具体的落地步骤和注意事项:


1. 确保Maven依赖坐标正确

mysql-connector从8.x版本开始,依赖坐标已经更新,11.0.19版本的正确配置如下:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>11.0.19</version>
    <!-- 仅运行时需要的话,加上runtime scope,避免编译阶段依赖 -->
    <scope>runtime</scope>
</dependency>

注意:旧的mysql:mysql-connector-java坐标已经废弃,必须使用新的com.mysql:mysql-connector-j。

2. 配置Maven打包,确保依赖被包含

光加依赖还不够,必须让Maven打包时把mysql-connector和其他依赖一起打包到最终产物里,否则Docker容器内的应用会找不到驱动:

  • 普通Java项目:使用Maven Assembly插件打包成包含所有依赖的可执行jar
    在pom.xml的<build>节点下添加插件配置:
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <!-- 替换成你的主类全路径 -->
                        <mainClass>com.yourcompany.yourapp.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>package-with-deps</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    
  • Spring Boot项目:Spring Boot Maven插件默认会打包成包含所有依赖的Fat Jar,只需确保插件已配置(一般Spring Boot初始化项目时会自动添加),直接执行mvn package即可。

3. 调整Dockerfile适配自动化构建

放弃手动拷贝jar包的方式,改用多阶段构建减少镜像体积,同时让构建流程完全自动化:

# 第一阶段:用Maven构建项目
FROM maven:3.9.6-eclipse-temurin-17 AS builder
WORKDIR /app
# 先拷贝pom.xml下载依赖,利用Docker缓存加速后续构建
COPY pom.xml .
RUN mvn dependency:go-offline
# 拷贝源码并打包
COPY src ./src
RUN mvn package -DskipTests

# 第二阶段:仅运行项目,用轻量的JRE镜像
FROM eclipse-temurin-17-jre-alpine
WORKDIR /app
# 从构建阶段拷贝打包好的jar包
COPY --from=builder /app/target/your-app-jar-with-dependencies.jar ./app.jar
# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]

4. Jenkins构建流程配置

在Jenkinsfile中加入Maven打包和Docker镜像构建的步骤,示例如下:

pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                git url: '你的Git仓库地址', branch: 'main'
            }
        }
        stage('Maven打包') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('构建Docker镜像') {
            steps {
                sh 'docker build -t your-app-image:latest .'
            }
        }
        // 可选:推送镜像到私有仓库
        stage('推送镜像') {
            steps {
                sh 'docker push your-app-image:latest'
            }
        }
    }
}

确保Jenkins节点已安装Maven和Docker,或使用预装有这些工具的Jenkins代理镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:57:32