我正在使用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
任何想法或调整,以便我可以在容器启动后运行这两个命令吗?
非常感谢!
答案 0 :(得分:10)
将ENTRYPOINT
设为/usr/bin/env
。然后将CMD
设置为您想要运行的内容。
答案 1 :(得分:3)
为了将来参考,以下是我必须添加到Dockerfile的两行:
ENTRYPOINT ["/usr/bin/env"]
CMD ["bash", "/opt/gatling/trigger-test-and-parse-result.sh"]