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

运行Docker镜像时Extent Report无法生成的问题求助

解决Docker容器中Maven命令未生成Report和target文件夹的问题

原Dockerfile内容

FROM maven:3.6.0-jdk-8-alpine
RUN apk add curl jq

#copying src from my framework
COPY src /home/SeleniumFramework/src/

#copying pom.xml of my framework
COPY pom.xml /home/SeleniumFramework/

RUN mvn -f /home/SeleniumFramework dependency:go-offline

#copying testng.xml of my framework
COPY testng.xml /home/SeleniumFramework/

ADD healthcheck.sh healthcheck.sh
#Running the suite
CMD  mvn -f /home/SeleniumFramework/pom.xml clean test

问题描述

使用docker run -it mayankluckym/selenium-5运行镜像后,执行Maven测试命令未生成Report和target文件夹;但通过docker run -it --entrypoint sh mayankluckym/selenium-5进入容器,切换到/home/SeleniumFramework/目录后执行相同的Maven命令,能正常生成目标文件夹。

原因分析

问题核心在于容器的工作目录:

  • 使用CMD执行命令时,容器默认工作目录是根目录(/),尽管Maven命令通过-f指定了pom.xml的路径,但Maven会将target、Report等输出文件夹默认创建在当前工作目录(即根目录),而非pom.xml所在的/home/SeleniumFramework/。
  • 手动进入容器后切换到目标目录执行命令时,工作目录变为/home/SeleniumFramework/,输出文件夹自然生成在此路径下。

解决方案

在Dockerfile中添加WORKDIR指令,将工作目录指定为/home/SeleniumFramework/,确保Maven命令在正确的路径下执行,输出文件夹会直接生成在该目录中。

修改后的Dockerfile

FROM maven:3.6.0-jdk-8-alpine
RUN apk add curl jq

# 设置工作目录为SeleniumFramework所在路径
WORKDIR /home/SeleniumFramework/

# 复制源码到当前工作目录的src子目录
COPY src ./src/

# 复制pom.xml到当前工作目录
COPY pom.xml ./

# 离线下载依赖(无需指定-f参数,默认使用当前目录的pom.xml)
RUN mvn dependency:go-offline

# 复制testng.xml到当前工作目录
COPY testng.xml ./

ADD healthcheck.sh healthcheck.sh

# 执行测试命令(工作目录已正确设置,无需指定pom.xml路径)
CMD ["mvn", "clean", "test"]

关键修改点

  1. 添加WORKDIR /home/SeleniumFramework/:后续所有命令默认在此目录下执行,简化路径写法。
  2. 简化COPY和RUN指令:使用相对路径替代绝对路径,更符合Docker最佳实践。
  3. 简化CMD命令:因工作目录已正确设置,无需再通过-f指定pom.xml路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:50:17