Running in Docker

The official Docker image is at locustio/locust.

Use it like this (assuming that the locustfile.py exists in the current working directory):

docker run -p 8089:8089 -v $PWD:/mnt/locust locustio/locust -f /mnt/locust/locustfile.py

On Windows, this command will sometimes cause errors. Windows users should try using this instead:

docker run -p 8089:8089 --mount type=bind,source=$pwd,target=/mnt/locust locustio/locust -f /mnt/locust/locustfile.py

Docker Compose

Here’s an example Docker Compose file that could be used to start both a master node, and worker nodes:

version: '3'

services:
  master:
    image: locustio/locust
    ports:
     - "8089:8089"
    volumes:
      - ./:/mnt/locust
    command: -f /mnt/locust/locustfile.py --master -H http://master:8089
  
  worker:
    image: locustio/locust
    volumes:
      - ./:/mnt/locust
    command: -f /mnt/locust/locustfile.py --worker --master-host master

The above compose configuration could be used to start a master node and 4 workers using the following command:

docker-compose up --scale worker=4

Use docker image as a base image

It’s very common to have test scripts that rely on third party python packages. In those cases you can use the official Locust docker image as a base image:

FROM locustio/locust
RUN pip3 install some-python-package

Running a distributed load test on Kubernetes

HELM

One of the ways to run Locust on Kubernetes is to use a Helm chart.

There is a good helm chart here: github.com/deliveryhero/helm-charts.

Note: this Helm chart is a separate project, and not supported by Locust maintainers.

Kubernetes Operator

Another way to run Locust on Kubernetes is to use the Locust Kubernetes Operator.

The Locust Operator is designed to unlock easy, seamless & effortless distributed performance testing in the cloud.

Note: the Locust Kubernetes Operator is a separate project and is not supported by Locust maintainers.