Вывод команды Docker ps пуст при добавлении команды в раздел image.run()
Среда:
- версия плагина docker: 1.1.2;
- версия Дженкинса: 2.0.50727;
- версия клиент / сервер докера: 17.12.0-ce;
- Win 10 Pro x64;
Сценарий 1. Я пытаюсь запустить образ Selenoid через Jenkinsfile с помощью следующей команды:
stage('Start services') {
docker.image('aerokube/selenoid').
run('--name selenoid ' +
'-p 4444:4444 ' +
'-v C:/workspace/selenoid:/etc/selenoid ' +
'-v C:/workspace/output:/opt/selenoid/video ' +
'-v //var/run/docker.sock:/var/run/docker.sock ' +
'-e "OVERRIDE_VIDEO_OUTPUT_DIR=/C/workspace/output/"')
}
Фактический результат: контейнер создан, и я вижу контейнер Selenoid в выводе Docker PS.
Сценарий 2:
Когда я добавляю любую команду после точки - контейнер не создается. Пожалуйста, смотрите следующее:
stage('Start services') {
docker.image('aerokube/selenoid').
run('--name selenoid ' +
'-p 4444:4444 ' +
'-v C:/workspace/selenoid:/etc/selenoid ' +
'-v C:/workspace/output:/opt/selenoid/video ' +
'-v //var/run/docker.sock:/var/run/docker.sock ' +
'-e "OVERRIDE_VIDEO_OUTPUT_DIR=/C/workspace/output/"',
'-video-output-dir /output')
}
В этом сценарии я добавил -video-output-dir /output
, Кстати, я пытаюсь добавить следующую команду после точки: -limit 10
, -conf /etc/selenoid/browsers.json
но безрезультатно.
Также, пожалуйста, смотрите следующие журналы от работы Jenkins:
[Pipeline] sh
[C:\Jenkins\workspace\pplication_react-app_master-6UL22J3ZHJJMMTIKZO5LDRETFMNMM4TSEGGCZJKAGTM5HBOEAEYQ] Running shell script
+ docker run -d --name selenoid -p 4444:4444 -v C:/workspace/selenoid:/etc/selenoid -v C:/workspace/output:/opt/selenoid/video -v //var/run/docker.sock:/var/run/docker.sock -e OVERRIDE_VIDEO_OUTPUT_DIR=/C/workspace/output/ aerokube/selenoid -video-output-dir /output
[Pipeline] dockerFingerprintRun
[Pipeline] bat
[pplication_react-app_master-6UL22J3ZHJJMMTIKZO5LDRETFMNMM4TSEGGCZJKAGTM5HBOEAEYQ] Running batch script
C:\Jenkins\workspace\pplication_react-app_master-6UL22J3ZHJJMMTIKZO5LDRETFMNMM4TSEGGCZJKAGTM5HBOEAEYQ>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Docker ps
вывод команды пуст...
Что я делаю не так? Может я так не делаю args
перенести в раздел run()?
1 ответ
Посмотрите на Selenoid Dockerfile. Важные строки:
ENTRYPOINT ["/usr/bin/selenoid"]
CMD ["-listen", ":4444", "-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video/"]
Это означает, что команда точки входа всегда выполняется и все внутри CMD
применяется только если аргументы не передаются явно. В вашем случае вы добавляете свои собственные аргументы:
'-video-output-dir /output'
Это означает CMD
содержание раздела больше не применяется. Но -conf
является обязательным аргументом, который по умолчанию config/browsers.json
не /etc/selenoid/browsers.json
, Поэтому правильное решение - добавить -conf /etc/selenoid/browsers.json
к вашему выражению.