通过Docker运行k6时导入本地JS模块

时间:2017-11-07 13:52:51

标签: javascript performance-testing load-testing stress-testing k6

我正在使用k6 Docker镜像来运行负载测试。我在同一目录中有一个库文件和一个测试脚本文件。

但是当我尝试打开模块文件时,我收到此错误:

time="2017-10-12T06:59:58Z" level=error msg="GoError: open /library.js: no such file or directory
    at native
    at -:55:95(51)

给出的命令是:docker run -i loadimpact/k6:latest run -i 1 - <test.js

在我的test.js脚本中,import语句如下所示:

import {fn} from "./library.js";

1 个答案:

答案 0 :(得分:1)

Docker容器无权访问主机上的工作目录。您需要将其安装在Docker容器中。试试这个:

docker run -i -v $(pwd):/mnt loadimpact/k6:latest run - <test.js

您还需要更改import语句,因此它说:

import {fn} from "/mnt/library.js";

..当然,当你运行docker命令时,library.js必须在你当前的工作目录中。

(注意执行k6时不需要添加-i 1,默认为1次迭代)

最后,如果我是你,我可能也会跳过test.js到stdin的管道,因为你正在安装一个目录。你可以做: docker run -v $(pwd):/mnt loadimpact/k6:latest run /mnt/test.js

这意味着您正在启动一个Docker容器,主机上的当前工作目录将挂载在/ mnt(在Docker容器中),然后告诉k6执行驻留在/ mnt中的“test.js” (这是您在主机上的当前WD)和test.js导入也位于/ mnt(主机上的当前WD)的.js文件。所以所有文件都应该在你的工作目录中。