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

JMeter-Taurus Docker镜像在Drone流水线运行报错求助

问题解决:Drone流水线中JMeter-Taurus的权限错误修复

问题根源梳理

  1. 初始Dockerfile使用USER 1000后,Taurus尝试在根目录创建.bzt-rc配置文件失败,抛出"No personal config found"错误——因为普通用户1000对根目录无写入权限。
  2. 移除USER 1000以root运行后,出现PermissionError: [Errno 13] Permission denied: '/bzt/bzt.log',是因为/bzt目录被设置为归属1000:1000用户组,且Drone挂载卷的权限限制导致root无法写入该目录。

解决方案

方案1:保留USER 1000,修正配置文件路径与目录权限

将配置文件复制到用户1000的家目录,并确保Taurus需要写入的目录有足够权限:

FROM blazemeter/taurus

RUN apt-get update && \
    python3 -m pip install s3cmd

# 创建并设置用户1000的家目录权限
RUN mkdir -p /home/taurus && \
    chown -R 1000:1000 /home/taurus

COPY . /bzt/
COPY config/90-artifacts-dir.json /etc/bzt.d/
COPY config/90-no-console.json /etc/bzt.d/
COPY .bzt-rc /home/taurus/.bzt-rc  # 复制到用户1000的家目录,而非root目录

# 确保/bzt及产物目录权限正确
RUN mkdir -p /bzt/bzt_artifacts && \
    chown -R 1000:1000 /bzt && \
    sed -i -e '/^assistive_technologies=/s/^/#/' /etc/java-*-openjdk/accessibility.properties

USER 1000

VOLUME ["/bzt"]

WORKDIR /bzt

同时在Taurus测试配置文件(如bzt-config.yml)中明确日志和产物路径:

settings:
  log-file: /bzt/bzt.log
  artifacts-dir: /bzt/bzt_artifacts

方案2:以root运行,开放目录权限

如果必须以root身份运行,调整/bzt目录权限确保root可写入:

FROM blazemeter/taurus

RUN apt-get update && \
    python3 -m pip install s3cmd

COPY . /bzt/
COPY config/90-artifacts-dir.json /etc/bzt.d/
COPY config/90-no-console.json /etc/bzt.d/
COPY .bzt-rc /root/.bzt-rc

# 设置/bzt目录归属root并开放读写权限
RUN mkdir -p /bzt/bzt_artifacts && \
    chown -R root:root /bzt && \
    chmod -R 775 /bzt && \
    sed -i -e '/^assistive_technologies=/s/^/#/' /etc/java-*-openjdk/accessibility.properties

# 默认以root运行,无需USER指令

VOLUME ["/bzt"]

WORKDIR /bzt

额外注意事项

  • Drone流水线挂载卷时,需确保宿主目录权限允许容器内用户(1000或root)写入,必要时调整Drone挂载选项。
  • 检查90-artifacts-dir.json中的配置,确保产物目录路径与Dockerfile中创建的路径一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:46:12