如何为Locust基础Docker镜像添加自定义Poetry环境?
在带Poetry额外依赖的Docker容器中运行Locust
方案一:构建包含Poetry依赖的稳定镜像(生产推荐)
这种方式将所有依赖打包进镜像,运行时无需重复安装,适合稳定的负载测试场景。
步骤1:准备项目文件
确保本地项目目录下有:
pyproject.toml(已声明所有额外依赖)poetry.lock(可选,用于锁定依赖版本)locustfile.py(Locust测试脚本)
步骤2:编写Dockerfile
创建名为Dockerfile的文件,内容如下:
# 基于官方Locust镜像 FROM locustio/locust # 安装Poetry包管理工具 RUN pip install poetry # 设置容器内工作目录 WORKDIR /mnt/locust # 复制Poetry配置文件到容器 COPY pyproject.toml poetry.lock* ./ # 配置Poetry不创建虚拟环境,直接使用系统Python环境 RUN poetry config virtualenvs.create false \ # 安装项目依赖(--no-root表示不安装项目本身,--only main仅安装生产依赖) && poetry install --no-root --only main # 复制Locust测试脚本到容器 COPY locustfile.py ./ # 容器启动时执行的命令 CMD ["locust", "-f", "/mnt/locust/locustfile.py"]
步骤3:构建并运行容器
执行以下命令构建镜像并启动容器:
# 构建自定义镜像,命名为locust-poetry docker build -t locust-poetry . # 启动容器,映射8089端口(Locust默认端口) docker run -p 8089:8089 locust-poetry
方案二:绑定挂载本地项目(开发调试用)
如果需要频繁修改本地代码或依赖,可直接挂载本地目录到容器内,实时生效。由于Poetry环境与工作目录关联,需在启动时处理依赖安装:
执行以下命令启动容器:
docker run -p 8089:8089 -v $PWD:/mnt/locust locustio/locust \ sh -c "pip install poetry && poetry config virtualenvs.create false && poetry install --no-root && locust -f /mnt/locust/locustfile.py"
命令说明
-v $PWD:/mnt/locust:将当前本地目录挂载到容器内的/mnt/locust路径- 用
sh -c串联命令:先安装Poetry,配置禁用虚拟环境,安装项目依赖,最后启动Locust
注意事项
- 若需要安装开发依赖,可移除
--only main参数,改为poetry install --no-root - 确保
pyproject.toml中已正确添加所有负载测试所需的额外库(如requests、pandas等) - 生产环境优先使用方案一,避免每次启动容器重复安装依赖,保证运行稳定性
内容的提问来源于stack exchange,提问作者azizbro
相关产品推荐
相关产品推荐

