2016-12-18 6 views
3

Я использую Docker (версия 1.12.2, build bb80604) для установки простого изображения/контейнера с Gatling (инструмент тестирования нагрузки) + NodeJS. Итак, я вытащил this Docker/Gatling base image и создал свой собственный файл Docker для установки NodeJS на нем.Docker - переопределить или удалить ENTRYPOINT из базового изображения

Однако изображение основания 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) Я хотел бы чтобы выполнить один раз начинается контейнера (он должен вызвать Гатлинга, а затем запускает мой NodeJS анализатор):

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

Любые идеи или твики, так что я могу запустить обе команды, как только мой стартах контейнера?

Большое спасибо!

+1

ваш 'Докер run' концы с' Гатлинга-nodejs: v7' это опечатка? Я думал, что это закончится 8 вместо 7. – user2915097

+0

Это опечатка, извините. Просто обновлено! :) – user2253130

+0

попробуйте в gatlin.sh 'cmd1; cmd2; sleep infinity' – user2915097

ответ

5

ENTRYPOINT до /usr/bin/env. Затем установите CMD как то, что вы хотите запустить.

+0

Отлично! Это сработало для меня! Большое спасибо! – user2253130

0

Идея Грэма выше работала довольно хорошо. Еще раз спасибо!

На будущее, вот две строки, я должен был добавить к моему Dockerfile:

ENTRYPOINT ["/usr/bin/env"] 

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