-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Official Docker image and documentation #850
Changes from all commits
1bd6c4f
105354c
1b1c313
acdf33a
cb624eb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
FROM python:3.6 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we should use either |
||
|
||
RUN pip install locustio pyzmq | ||
|
||
ADD docker_start.sh /usr/bin/docker_start | ||
RUN chmod 755 /usr/bin/docker_start | ||
|
||
EXPOSE 8089 5557 5558 | ||
|
||
CMD ["docker_start"] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#!/usr/bin/env bash | ||
|
||
if [ -z "${TARGET_URL}" ]; then | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. While I agree we should handle env vars for all of these settings, I think we should handle these at the app leveland simply take whatever the |
||
echo "ERROR: TARGET_URL not configured" >&2 | ||
exit 1 | ||
fi | ||
|
||
LOCUST_MODE="${LOCUST_MODE:=standalone}" | ||
LOCUST_OPTS="-f ${LOCUSTFILE_PATH:-/locustfile.py} -H ${TARGET_URL}" | ||
|
||
if [ "${LOCUST_MODE}" = "master" ]; then | ||
LOCUST_OPTS="${LOCUST_OPTS} --master" | ||
elif [ "${LOCUST_MODE}" = "slave" ]; then | ||
if [ -z "${LOCUST_MASTER_HOST}" ]; then | ||
echo "ERROR: MASTER_HOST is empty. Slave mode requires a master" >&2 | ||
exit 1 | ||
fi | ||
|
||
LOCUST_OPTS="${LOCUST_OPTS} --slave --master-host=${LOCUST_MASTER_HOST} --master-port=${LOCUST_MASTER_PORT:-5557}" | ||
fi | ||
|
||
echo "Starting Locust..." | ||
echo "$ locust ${LOCUST_OPTS}" | ||
|
||
locust ${LOCUST_OPTS} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
.. _running-locust-docker: | ||
|
||
================================= | ||
Running Locust with Docker | ||
================================= | ||
|
||
To keep things simple we provide a single Docker image that can run standalone, as a master, or as a slave. | ||
|
||
|
||
Environment Variables | ||
--------------------------------------------- | ||
|
||
- ``LOCUST_MODE`` | ||
|
||
One of 'standalone', 'master', or 'slave'. Defaults to 'standalone'. | ||
|
||
- ``LOCUSTFILE_PATH`` | ||
|
||
The path inside the container to the locustfile. Defaults to '/locustfile.py` | ||
|
||
- ``LOCUST_MASTER_HOST`` | ||
|
||
The hostname of the master. | ||
|
||
- ``LOCUST_MASTER_PORT`` | ||
|
||
The port used to communicate with the master. Defaults to 5557. | ||
|
||
|
||
Add your tests | ||
--------------------------------------------- | ||
|
||
The easiest way to get your tests running is to build an image with your test file built in. Once you've | ||
written your locustfile you can bake it into a Docker image with a simple ``Dockerfile``: | ||
|
||
``` | ||
FROM locustio/locust | ||
ADD locustfile.py locustfile.py | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe we should discourage the usage of |
||
``` | ||
|
||
You'll need to push the built image to a Docker repository such as Dockerhub, AWS ECR, or GCR in order for | ||
distributed infrastructure to be able to pull the image. See your chosen repository's documentation on how | ||
to authenticate with the repository to pull the image. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
version: "3.4" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm all for using the latest |
||
|
||
x-common: &common | ||
image: locustio/locust | ||
environment: &common-env | ||
TARGET_URL: http://locust-master:8089 | ||
LOCUSTFILE_PATH: /tests/basic.py | ||
volumes: | ||
- ../:/tests | ||
|
||
services: | ||
locust-master: | ||
<<: *common | ||
ports: | ||
- 8089:8089 | ||
environment: | ||
<<: *common-env | ||
LOCUST_MODE: master | ||
|
||
locust-slave: | ||
<<: *common | ||
environment: | ||
<<: *common-env | ||
LOCUST_MODE: slave | ||
LOCUST_MASTER_HOST: locust-master |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we update this to push
latest
if the branch is master?