[英]Jmeter in Docker
我正在尝试在 Docker 中运行 Jmeter。 我得到了 Dockerfile 并且 Entrypoint 也添加了 entrypoint.sh。
ARG JMETER_VERSION="5.2.1"
RUN mkdir /jmeter
WORKDIR /jmeter
RUN apt-get update \
&& apt-get install wget -y \
&& apt-get install openjdk-8-jdk -y \
&& wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.1.tgz \
&& tar -xzf apache-jmeter-5.2.1.tgz \
&& rm apache-jmeter-5.2.1.tgz
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
RUN export JAVA_HOME
RUN echo $JAVA_HOME
ENV JMETER jmeter/apache-jmeter-5.2.1/bin
ENV PATH $PATH:$JMETER_BIN
RUN export JMETER
RUN echo $JMETER
WORKDIR /jmeter/apache-jmeter-5.2.1
COPY users.jmx /jmeter/apache-jmeter-5.2.1
COPY entrypoint.sh /jmeter/apache-jmeter-5.2.1
RUN ["chmod", "+x", "entrypoint.sh"]
ENTRYPOINT ["./entrypoint.sh"]
入口点.sh
#!/bin/bash
# Inspired from https://github.com/hhcordero/docker-jmeter-client
# Basically runs jmeter, assuming the PATH is set to point to JMeter bin-dir (see Dockerfile)
#
# This script expects the standdard JMeter command parameters.
#
set -e
freeMem=`awk '/MemFree/ { print int($2/1024) }' /proc/meminfo`
s=$(($freeMem/10*8))
x=$(($freeMem/10*8))
n=$(($freeMem/10*2))
export JVM_ARGS="-Xmn${n}m -Xms${s}m -Xmx${x}m"
echo "START Running Jmeter on `date`"
echo "JVM_ARGS=${JVM_ARGS}"
echo "jmeter args=$@"
# Keep entrypoint simple: we must pass the standard JMeter arguments
bin/jmeter.sh $@
echo "END Running Jmeter on `date`"
现在,当我尝试在没有 jmeter arguments 的情况下运行容器时,容器启动并询问 jmeter ZDBC11CAA5BDA99F77E6FB4DABD882E7
docker run sar/test12
我收到错误,因为发生错误:未设置 X11 DISPLAY 变量,但该程序执行了需要它的操作。
但是当我使用 arguments docker run -v /home/jmeter/unbuntjmeter/:/jmeter/apache-jmeter-5.2.1 sar/test12 -n -t./users.jmx
docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致“exec:”./entrypoint.sh“:权限被拒绝”:未知。
对于 X11 问题,您可以尝试在docker run
中设置-e DISPLAY=$DISPLAY
,您可能需要执行一些其他步骤才能使其正常工作,具体取决于您的主机设置方式。 但是试图让 GUI 在这里工作似乎有点过头了。 要在通过命令 arguments 时解决您的问题,您可以:
chmod +x /home/jmeter/unbuntjmeter/entrypoint.sh
将执行权限添加到主机上的entrypoint.sh
文件。或者
docker run
命令中删除-v
参数来将/home/jmeter/unbuntjmeter/
安装到容器中。当您运行此命令docker run -v /home/jmeter/unbuntjmeter/:/jmeter/apache-jmeter-5.2.1 sar/test12 -n -t./users.jmx
时,您正在安装目录/home/jmeter/unbuntjmeter/
从您的主机到您的/jmeter/apache-jmeter-5.2.1
容器中的 /jmeter/apache-jmeter-5.2.1。
这意味着容器中的/jmeter/apache-jmeter-5.2.1/entrypoint.sh
脚本被主机上该目录中的脚本覆盖(如果有的话,似乎确实存在)。 您主机上的此文件没有在您的容器中执行的适当权限(可能它只需要+x
因为您在构建中运行它: RUN ["chmod", "+x", "entrypoint.sh"]
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.