Docker - 从基础镜像中覆盖或删除 ENTRYPOINT

Docker - Override or remove ENTRYPOINT from a base image

我正在使用 Docker(版本 1.12.2,构建 bb80604)通过 Gatling(负载测试工具)+ NodeJS 设置一个简单的 image/container。所以,我拉 this Docker/Gatling base image 并创建了我自己的 Docker 文件来安装 NodeJS。

但是,上面的 Docker/Gatling 基础镜像已经定义了一个 ENTRYPOINT 来直接调用 Gatling,然后自动退出容器。它看起来像这样:

ENTRYPOINT ["gatling.sh"]

我想要实现的是:我想 运行 第二个命令(我自己的 NodeJS 脚本来解析测试结果),但是到目前为止我找不到解决方案(我试过了覆盖 ENTRYPOINT,ENTRYPOINT 和 CMD 的不同组合,但没有成功)。

这是我当前的 Docker 文件的样子:

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"]

这是我用来根据我的 Docker 文件构建图像的命令:

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 然后 运行s 我的 NodeJS 解析器) :

gatling.sh -s MicroserviceHPSPubSubRatePerfTest.scala
node publish-rate-to-team-city.js

任何想法或调整,以便我可以在我的容器启动后 运行 这两个命令?

非常感谢!

ENTRYPOINT 设置为 /usr/bin/env。然后设置 CMD 为你想要的 运行.

格雷厄姆的上述想法非常有效。再次感谢!

为了将来参考,这里是我必须添加到我的 Dockerfile 中的两行:

ENTRYPOINT ["/usr/bin/env"]

CMD ["bash", "/opt/gatling/trigger-test-and-parse-result.sh"]