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

Docker部署Spring Boot应用时提示customer-transactions/excels不存在

问题分析与解决

核心原因

  1. 路径不匹配:代码中使用相对路径customer-transactions/excels/,但容器运行时的工作目录(WORKDIR)是/customer-transactions,程序实际会去查找/customer-transactions/customer-transactions/excels/,该路径并不存在。
  2. Dockerfile冗余与文件夹未同步:第一个ubuntu构建阶段完全未被后续阶段使用,属于冗余代码;同时build阶段创建的excels文件夹,既没有复制到最终运行容器中,也未在运行阶段重新创建。

具体修复步骤

步骤1:简化并修正Dockerfile

删除无用的第一个构建阶段,同时在运行阶段同步或创建excels文件夹:

FROM maven:3.8.6-openjdk-18 AS build
RUN mkdir /usr/src/customer-transactions
RUN mkdir -p /usr/src/customer-transactions/excels
COPY . /usr/src/customer-transactions
WORKDIR /usr/src/customer-transactions
RUN mvn clean package -DskipTests

FROM openjdk:18.0.1.1
RUN mkdir /customer-transactions
# 复制编译好的jar包
COPY --from=build /usr/src/customer-transactions/target/customer-transactions-0.0.1-SNAPSHOT.jar /customer-transactions/
# 两种方式二选一:从build阶段同步excels文件夹,或直接创建
COPY --from=build /usr/src/customer-transactions/excels /customer-transactions/excels
# RUN mkdir -p /customer-transactions/excels
EXPOSE 8050
WORKDIR /customer-transactions

CMD java -jar customer-transactions-0.0.1-SNAPSHOT.jar

步骤2:修正代码中的路径

将代码路径改为与容器工作目录匹配的相对路径:

public void deleteExistingFilesInDirectory() throws IOException {
    // 容器WORKDIR为/customer-transactions,此路径对应/customer-transactions/excels/
    FileUtils.cleanDirectory(new File("excels/"));
}

可选:非root用户运行优化

如果需要以非root用户运行应用,可在最后阶段添加权限配置:

FROM openjdk:18.0.1.1
RUN mkdir /customer-transactions
RUN groupadd -r tommy && useradd -r -s /bin/false -g tommy tommy
COPY --from=build /usr/src/customer-transactions/target/customer-transactions-0.0.1-SNAPSHOT.jar /customer-transactions/
RUN mkdir -p /customer-transactions/excels
RUN chown -R tommy:tommy /customer-transactions
USER tommy
EXPOSE 8050
WORKDIR /customer-transactions

CMD java -jar customer-transactions-0.0.1-SNAPSHOT.jar

验证

重新构建镜像并启动容器,程序即可正确识别excels文件夹并执行清空操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:25:28