docker - 将 JMeter 插件与 justb4/jmeter Docker 镜像一起使用会导致错误

标签 docker azure-devops jmeter

目标

我正在使用 Docker 在 Azure Devops 中运行 JMeter。我正在尝试使用 Blazemeter 的并行 Controller ,它不是 JMeter 原生的。因此,根据 justb4/jmeter 图像文档,我使用以下命令来获取图像并运行 JMeter 测试:

docker run --name jmetertest -i -v /home/vsts/work/1/s/plugins:/plugins -v $ROOTPATH:/test -w /test justb4/jmeter ${@:2}

错误

但是,它在尝试适应插件时会产生以下错误(我知道该插件由于没有插件进行测试而产生了差异):

cp: can't create '/test/lib/ext': No such file or directory

据我了解,这是当您尝试创建的目录的父目录之一不存在时产生的错误。是我做错了什么,还是图像实际上有问题?

引用文献

作为引用,我将包含图像文档和存储库的链接。

图片:https://hub.docker.com/r/justb4/jmeter

存储库:https://github.com/justb4/docker-jmeter

最佳答案

调查Dockerfile :

ENV JMETER_HOME /opt/apache-jmeter-${JMETER_VERSION}

调查entrypoint.sh

if [ -d /plugins ]
then
    for plugin in /plugins/*.jar; do
        cp $plugin $(pwd)/lib/ext
    done;
fi

它基本上将插件从 /plugins 文件夹(如果存在)复制到 /lib/ext 文件夹相对于当前工作目录

我不知道为什么要将此节 -w/test 添加到命令行中,但它明确“告诉”容器本地工作目录是 /test,而不是 /opt/apache-jmeter-xxxx,这就是脚本无法复制文件的原因。


总的来说,我认为这种方法不是非常有效,因为:

  • 在 Azure DevOps 中,您不会有“本地”文件夹(除非您想在版本控制系统下添加插件二进制文件)

  • 某些 JMeter 插件具有其他 .jar,如 dependencies因此,当您安装插件时,您应该:

    • 将插件本身放在 JMeter 安装的/lib/ext 文件夹下
    • 将插件依赖项放在 JMeter 安装的/lib 文件夹下

所以我建议修改Dockerfile,下载JMeter Plugins Managerinstalled the plugin(s) you need from the command line

类似于:

RUN wget https://jmeter-plugins.org/get/ -O /opt/apache-jmeter-${JMETER_VERSION}/lib/ext/jmeter-plugins-manager.jar
RUN wget https://repo1.maven.org/maven2/kg/apc/cmdrunner/2.2/cmdrunner-2.2.jar -P /opt/apache-jmeter-${JMETER_VERSION}/lib/
RUN java -cp /opt/apache-jmeter-${JMETER_VERSION}/lib/ext/jmeter-plugins-manager.jar org.jmeterplugins.repository.PluginManagerCMDInstaller
RUN /opt/apache-jmeter-${JMETER_VERSION}/bin/./PluginsManagerCMD.sh install bzm-parallel

关于docker - 将 JMeter 插件与 justb4/jmeter Docker 镜像一起使用会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67911367/

相关文章:

java - 运行图像 404 后的 docker。Tomcat - 请求的资源不可用

linux - Neo4j:通过Dockerfile中的Shell脚本将文件夹复制到/data目录

azure-devops - 如何有条件地设置 Azure DevOps 参数的值?

azure-devops - VSTS - 部署组发布不起作用 : Unable to deploy to the target as the target is offline

java - 如何在 java 中执行 jMeter 脚本并在同一程序中处理结果?

jmeter - 在 Jmeter 中一次运行所有 http 请求

SSL : Testing Server Side certificates using Jmeter

docker - 在 Dockerfile 中使用显式 UID/GID

java - 带有 Spring Boot 3.0.0 日志记录问题的 native 图像

azure - 经典与 YAML 管道 - Azure Devops 中的批准和控制/检查