【发布时间】:2017-05-03 14:46:10
【问题描述】:
我正在使用 Docker(版本 1.12.2,构建 bb80604)通过 Gatling(负载测试工具)+ NodeJS 设置一个简单的图像/容器。所以,我拉了this Docker/Gatling base image 并创建了我自己的 Dockerfile 来在上面安装 NodeJS。
然而,上面的 Docker/Gatling 基础镜像已经定义了一个 ENTRYPOINT 来直接调用 Gatling,然后自动退出容器。它看起来像这样:
ENTRYPOINT ["gatling.sh"]
我想要实现的是:我想运行第二个命令(我自己的 NodeJS 脚本来解析测试结果),但是到目前为止我找不到解决方案(我尝试覆盖 ENTRYPOINT,不同的组合ENTRYPOINT 和 CMD,但没有成功)。
这是我当前的 Dockerfile 的样子:
FROM denvazh/gatling:2.2.3
RUN apk update \
&& apk add -U bash \
&& apk add nodejs=6.7.0-r0
COPY simulations /opt/gatling/user-files/simulations
COPY trigger-test-and-parser.sh /opt/gatling/
RUN chmod +x /opt/gatling/trigger-test-and-parser.sh
ENTRYPOINT ["bash", "/opt/gatling/trigger-test-and-parser.sh"]
这是我用来基于我的 Dockerfile 构建映像的命令:
docker build --no-cache -t gatling-nodejs:v8 .
这是我用来运行容器的命令:
docker run -i -v "$PWD/results":/opt/gatling/results -v "$PWD":/opt/gatling/git.campmon.com/rodrigot/platform-hps-perf-test gatling-nodejs:v8
这是我想在容器启动后执行的 shellscript (trigger-test-and-parser.sh)(它应该触发 Gatling,然后运行我的 NodeJS 解析器):
gatling.sh -s MicroserviceHPSPubSubRatePerfTest.scala
node publish-rate-to-team-city.js
有什么想法或调整,以便我可以在容器启动后同时运行这两个命令吗?
非常感谢!
【问题讨论】:
-
您的
docker run以gatling-nodejs:v7结尾,是不是拼写错误?我以为它会以 8 而不是 7 结尾。 -
这是一个错字,对不起。刚刚更新! :)
-
试试你的gatlin.sh
cmd1 ; cmd2 ; sleep infinity