Okay, this time we will create a Docker-Jmeter test environment. We create some simple (but tiny) Docker images/containers which can be reused for future test runs. Here we follow the DRY rule. Next, we want to achieve.
$ java -jar apache-jmeter-3.0/bin/ApacheJMeter.jar -t /tutorial/jmx/simple.jmx -n -l /tutorial/results/log.jtl
Preconditions
- docker installed and running
Preparation
# create all directories $ mkdir -p /tutorial/{java,jmeter,jmx,results} # create Dockerfile for JAVA $ cd /tutorial/java && vim Dockerfile # build JAVA image $ docker build -t alpine/java . # create Dockerfile for Jmeter $ cd /tutorial/jmeter && vim Dockerfile # build Jmeter image $ docker build -t alpine/jmeter . # list Docker images (optional) $ docker images ... REPOSITORY TAG IMAGE ID CREATED SIZE alpine/jmeter latest 0864228be6ef 15 seconds ago 150.2 MB alpine/java latest 068005f45866 5 minutes ago 102.8 MB alpine latest f70c828098f5 5 days ago 4.795 MB
Dockerfile JAVA
FROM alpine RUN apk --update add openjdk8-jre-base ENTRYPOINT ["/usr/bin/java"]
Dockerfile Jmeter
FROM alpine RUN apk --update add wget RUN wget http://mirror.switch.ch/mirror/apache/dist//jmeter/binaries/apache-jmeter-3.0.tgz RUN tar zxvf apache-jmeter-3.0.tgz RUN apk del wget RUN rm -f apache-jmeter-3.0.tgz RUN rm -fr /apache-jmeter-3.0/docs VOLUME /apache-jmeter-3.0 CMD ["/bin/true"]
JMX file
Create or copy existing JMX file on folder “/tutorial/jmx” with name “simple.jmx”.
# show JMX (optional) $ ls /tutorial/jmx ... simple.jmx
Create Jmeter container
# create jmeter container $ docker create --name jmeter alpine/jmeter # list containers (optional) $ docker ps -a ... CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0916ff8f25bb alpine/jmeter "/bin/true" 7 seconds ago Created jmeter
Note: The container was created but not running!
Test execution
# test run JAVA container (optional) $ docker run -ti --rm --volumes-from jmeter alpine/java -jar /apache-jmeter-3.0/bin/ApacheJMeter.jar --version # run Jmeter (without report) $ docker run -ti --rm -v /tutorial/jmx:/jmx --volumes-from jmeter alpine/java -jar /apache-jmeter-3.0/bin/ApacheJMeter.jar -t /jmx/simple.jmx -n # run Jmeter (with report) $ docker run -ti --rm -v /tutorial/jmx:/jmx -v /tutorial/results:/results --volumes-from jmeter alpine/java -jar /apache-jmeter-3.0/bin/ApacheJMeter.jar -t /jmx/simple.jmx -n -l /results/log.jtl # show report $ cat /tutorial/results/log.jtl
🙂