项目目录如下:

    1. - coll
    2. - test_op.py # 压测脚本
    3. - socket_client.py # 自定义socket客户端
    4. - work_id.txt # 测试数据
    5. - compose
    6. - Dockerfile
    7. - pip.conf
    8. - requirements.txt
    9. - docker-compose.yml
    1. #pip.conf 文件
    2. [global]
    3. timeout = 3600
    4. index-url = http://mirrors.aliyun.com/pypi/simple/
    5. trusted-host = mirrors.aliyun.com
    6. disable-pip-version-check = true
    1. # Dockerfile
    2. FROM python:3.7
    3. # 设置 python 环境变量
    4. ENV PYTHONUNBUFFERED 1
    5. ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
    6. COPY pip.conf /root/.pip/pip.conf
    7. # 创建 locust 文件夹
    8. RUN mkdir -p /mnt/locust
    9. # 将 locust 文件夹为工作目录
    10. WORKDIR /mnt/locust
    11. # 将当前目录加入到工作目录中(. 表示当前目录)
    12. ADD . /mnt/locust
    13. # 更新pip版本
    14. RUN /usr/local/bin/python3 -m pip install --upgrade pip
    15. # 利用 pip 安装依赖(websocket库放在requirements文件安装无效,不知道为啥...)
    16. RUN pip3 install -r requirements.txt
    17. RUN pip3 install websocket
    18. RUN pip3 install websocket-client
    1. # docker-compose.yml
    2. version: '3'
    3. networks: # 自定义网络(默认桥接), 不使用links通信
    4. coll_network:
    5. driver: bridge
    6. services:
    7. master:
    8. build: ./compose
    9. networks:
    10. - coll_network
    11. ports:
    12. - "8089:8089"
    13. volumes:
    14. - ./coll:/mnt/locust
    15. command: locust -f test_op.py --master --web-host=0.0.0.0
    16. worker:
    17. build: ./compose
    18. networks:
    19. - coll_network
    20. volumes:
    21. - ./coll:/mnt/locust
    22. command: locust -f test_op.py --worker --master-host master
    23. depends_on:
    24. - master

    docker compose build构建项目
    docker compose up —scale worker=4启动一个主节点和四个工作节点