如何将自定义诗歌环境添加到蝗虫基地Docker映像?



如何在安装了额外诗歌依赖的稳定Docker容器中运行Locust(负载测试工具)?从文档中我们知道,在Docker中运行Locust很容易通过他们的基本镜像。

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

但是,如果负载测试Python项目需要通过诗歌管理的额外库,则必须通过poetry run locust运行locust命令。蝗虫文档只给出了以下示例,但使用了pip:

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

如果您想将目录绑定挂载到容器,则会变得更加棘手,因为Poetry环境链接到创建它们的工作目录。

假设一个使用诗歌的python项目:

.
├── Dockerfile
├── README.md
├── data
├── poetry.lock
├── pyproject.toml
├── reports (mounting this directory to Docker to save reports)
└── src (contains the locust source code)
├── auth.py
├── config.py
├── locustfile.py
├── shapes
├── tasks
└── users.py

设置>我的Dockerfile的内容如下:

FROM locustio/locust
USER $USERNAME
# Use non-root user as a security measure
RUN groupadd -g 61000 docker
RUN useradd -g 61000 -l -m -s /bin/false -u 61000 docker
# Setup and install poetry
RUN apt update && 
apt install -y git curl && 
pip install poetry
# cacheing project requirements
WORKDIR /code
COPY poetry.lock pyproject.toml /code/
# installing project requirements
RUN poetry install --no-interaction --no-ansi --no-root
COPY . /code
ENTRYPOINT [ "poetry", "run", "locust" ]

指出:

  • USER $USERNAME对于获得正确的权限很重要
  • 诗歌环境链接到code/目录,它也是整个项目代码移动到
  • 的地方。
  • 入口点ENTRYPOINT [ "poetry", "run", "locust" ]是一个很好的模式,因为可以通过docker run命令传递额外的参数。

运行容器

使用:

创建图像
docker build -t locust .

负载测试示例:

docker run -p 8089:8089 --mount type=bind,src=$PWD/reports,dst=/code/reports locust -f src/locustfile.py --headless --host <HOST> --csv=reports/<PREFIX>

希望有帮助!

最新更新