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

Kubernetes部署Spring Boot应用报错:无法访问jarfile project-0.0.1.jar

修复步骤

1. 确认Jenkins构建后的实际JAR文件名

Jenkins构建生成的JAR文件名可能和你在CMD中硬编码的project-0.0.1.jar不一致,比如带有-SNAPSHOT后缀,或是因构建配置差异导致命名变化。

  • 登录Jenkins服务器,进入项目构建工作目录,查看build/libs/下的文件:
    ls -la /path/to/jenkins/workspace/your-project/build/libs/
    

2. 修改Dockerfile,避免硬编码JAR名

方案一:复制时统一重命名JAR

直接将构建后的JAR复制为固定名称,保证启动指令能匹配到:

# Use a Java runtime as the base image
FROM openjdk:17-slim-buster

# Set the working directory to /app
WORKDIR /app

# 复制JAR并统一命名为app.jar
COPY build/libs/*.jar /app/app.jar

# Expose the default port for the app
EXPOSE 8888

# Start the app when the container launches
CMD ["java", "-jar", "app.jar"]

方案二:用脚本动态查找可执行JAR

如果目录下存在多个JAR(如源码JAR和可执行JAR),通过脚本筛选启动:

# Use a Java runtime as the base image
FROM openjdk:17-slim-buster

# Set the working directory to /app
WORKDIR /app

# Copy the built JAR file into the container
COPY build/libs/*.jar /app/

# 生成启动脚本,排除源码JAR并取第一个可执行JAR
RUN echo '#!/bin/bash' > start.sh && \
    echo 'JAR_FILE=$(find /app -name "*.jar" | grep -v "-sources.jar" | head -1)' >> start.sh && \
    echo 'java -jar $JAR_FILE' >> start.sh && \
    chmod +x start.sh

# Expose the default port for the app
EXPOSE 8888

# 执行启动脚本
CMD ["/app/start.sh"]

3. 验证Docker镜像内容

构建镜像后,本地启动临时容器查看/app目录,确认JAR文件存在:

docker run -it --rm your-image-tag ls -la /app/

4. 检查Helm Chart的挂载配置

如果Helm Chart中配置了volumeMounts挂载到/app目录,会覆盖容器内的JAR文件。检查values.yaml或模板文件,确保没有误挂载覆盖该目录。

5. 重新构建部署

修改Dockerfile后,通过Jenkins重新构建镜像并推送至仓库,再用Helm重新部署:

helm upgrade --install your-release-name ./your-chart-directory

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:26:59