环境:
场景1: 我尝试使用以下命令通过Jenkinsfile运行Selenoid映像:
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/"')
}
实际结果: 创建了容器,我在docker ps输出中看到了Selenoid容器。
情景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()部分?
答案 0 :(得分:0)
看看Selenoid Dockerfile。重要的是:
ENTRYPOINT ["/usr/bin/selenoid"]
CMD ["-listen", ":4444", "-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video/"]
这意味着始终正在运行entrypoint命令,CMD
内的所有内容仅在没有明确传递args的情况下适用。在您的情况下,您正在添加自己的参数:
'-video-output-dir /output'
这意味着CMD
部分内容不再适用。但-conf
是必填参数,默认为config/browsers.json
,而不是/etc/selenoid/browsers.json
。所以正确的解决方案是在表达式中添加-conf /etc/selenoid/browsers.json
。