尝试使用 JMeter 的 docker 容器(非 GUI 模式)运行 JMeter 测试会抛出错误 "Could not open xxxx.jmx file"
Trying to run a JMeter test using a docker container for JMeter (non GUI mode) throws error "Could not open xxxx.jmx file"
我正在尝试使用 Docker 容器分发加载测试。
在本地 JMeter 中,我的测试 运行 在 GUI 或非 GUI 模式下正确,但是当我尝试 运行 在非 GUI 模式下使用 docker 图像时对于 JMeter:
docker run egaillardon/jmeter -n -t ~/Developer/testing/login_test.jmx -l ~/Desktop/resultado.jtl
我收到错误:
Could not open
~/Developer/testing/login_test.jmx
我为 JMeter (egaillardon/jmeter, justb4/jmeter, vmarrazzo/jmeter)
尝试了不同的 docker 图像,但我在其中任何一个中都遇到了相同的错误。任何人都知道我必须在我的 jmx 文件中更改什么才能使其可读?
我已经尝试过这个 solution in Stack Exchange 但 none 对我有用。
~/Developer/testing/login_test.jmx
将从容器文件系统的角度加载,很可能这个路径在您的容器文件系统中不存在。
为了克服这个问题,您可以使用 docker volume:
从您的主机文件系统将此文件挂载到您的容器文件系统中
docker run -v ~/Developer/testing/:/workspace egaillardon/jmeter -n -t /workspace/login_test.jmx -l /workspace/resultado.jtl
解释
-v ~/Developer/testing/:/workspace
:将主机中的 ~/Developer/testing/
目录挂载到容器文件系统 中的路径 /workspace/
-n -t /workspace/login_test.jmx -l /workspace/resultado.jtl
:选项在运行时传递给容器进程(jmeter),因此在容器的上下文中。我们需要调整路径,使其与我们在配置卷时选择的位置匹配。
您也可以将主机目录挂载到容器中的默认工作目录(/jmeter
)。
示例:
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins --nongui --testfile test.jmx --logfile result.jtl
通过这样做,jmeter 运行 日志文件 (jmeter.log
) 也将在主机目录中创建。
另外,为了解决文件权限问题,还可以将宿主机上的用户id和用户组id分配给容器内的jmeter用户。
示例:
docker run --env JMETER_GROUP_ID=`/usr/bin/id -g` --env JMETER_USER_ID=`/usr/bin/id -u` --rm egaillardon/jmeter --server -Jserver.rmi.ssl.disable=true
我正在尝试使用 Docker 容器分发加载测试。
在本地 JMeter 中,我的测试 运行 在 GUI 或非 GUI 模式下正确,但是当我尝试 运行 在非 GUI 模式下使用 docker 图像时对于 JMeter:
docker run egaillardon/jmeter -n -t ~/Developer/testing/login_test.jmx -l ~/Desktop/resultado.jtl
我收到错误:
Could not open ~/Developer/testing/login_test.jmx
我为 JMeter (egaillardon/jmeter, justb4/jmeter, vmarrazzo/jmeter)
尝试了不同的 docker 图像,但我在其中任何一个中都遇到了相同的错误。任何人都知道我必须在我的 jmx 文件中更改什么才能使其可读?
我已经尝试过这个 solution in Stack Exchange 但 none 对我有用。
~/Developer/testing/login_test.jmx
将从容器文件系统的角度加载,很可能这个路径在您的容器文件系统中不存在。
为了克服这个问题,您可以使用 docker volume:
从您的主机文件系统将此文件挂载到您的容器文件系统中docker run -v ~/Developer/testing/:/workspace egaillardon/jmeter -n -t /workspace/login_test.jmx -l /workspace/resultado.jtl
解释
-v ~/Developer/testing/:/workspace
:将主机中的~/Developer/testing/
目录挂载到容器文件系统 中的路径 -n -t /workspace/login_test.jmx -l /workspace/resultado.jtl
:选项在运行时传递给容器进程(jmeter),因此在容器的上下文中。我们需要调整路径,使其与我们在配置卷时选择的位置匹配。
/workspace/
您也可以将主机目录挂载到容器中的默认工作目录(/jmeter
)。
示例:
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter-plugins --nongui --testfile test.jmx --logfile result.jtl
通过这样做,jmeter 运行 日志文件 (jmeter.log
) 也将在主机目录中创建。
另外,为了解决文件权限问题,还可以将宿主机上的用户id和用户组id分配给容器内的jmeter用户。
示例:
docker run --env JMETER_GROUP_ID=`/usr/bin/id -g` --env JMETER_USER_ID=`/usr/bin/id -u` --rm egaillardon/jmeter --server -Jserver.rmi.ssl.disable=true