web-dev-qa-db-ja.com

Docker-ベースイメージからENTRYPOINTをオーバーライドまたは削除します

Docker(バージョン1.12.2、ビルドbb80604)を使用して、Gatling(負荷テストツール)+ NodeJSを使用して単純なイメージ/コンテナーをセットアップしています。そこで、 このDocker/Gatlingベースイメージ をプルし、NodeJSをインストールするための独自のDockerfileを作成しました。

ただし、上記のDocker/Gatlingベースイメージには、Gatlingをすぐに呼び出して、自動的にコンテナーを終了するように定義されたENTRYPOINTがあります。次のようになります。

ENTRYPOINT ["gatling.sh"]

私が達成しようとしているのは、2番目のコマンド(テスト結果を解析するための独自のNodeJSスクリプト)を実行したいのですが、これまでのところ解決策が見つかりませんでした(ENTRYPOINT、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

そして、これは、コンテナーが開始したら実行したいシェルスクリプト(trigger-test-and-parser.sh)です(Gatlingをトリガーしてから、NodeJSパーサーを実行する必要があります)。

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

コンテナが起動したら両方のコマンドを実行できるようにするためのアイデアや調整はありますか?

どうもありがとう!

9
user2253130

ENTRYPOINT/usr/bin/envに設定します。次に、CMDを実行したいものに設定します。

9

上記のグラハムのアイデアはかなりうまくいきました。再度、感謝します!

今後の参考のために、Dockerfileに追加する必要のある2行を次に示します。

ENTRYPOINT ["/usr/bin/env"]

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