环境:
- Docker-Plugin版本:1.1.2;
- Jenkins版本:2.0.50727;
- docker客户端/服务器版本:17.12.0-ce;
- Win 10 Pro X64;
方案1:我尝试通过以下命令通过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/"')
}
实际结果:该容器是创建的,我在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 Job的以下日志:
[Pipeline] sh
[C:Jenkinsworkspacepplication_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:Jenkinsworkspacepplication_react-app_master-6UL22J3ZHJJMMTIKZO5LDRETFMNMM4TSEGGCZJKAGTM5HBOEAEYQ>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Docker ps
命令输出为空...
我在做错什么?也许我不这样做args
转移到Run((部分?
看一下硒dockerfile。重要行是:
ENTRYPOINT ["/usr/bin/selenoid"]
CMD ["-listen", ":4444", "-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video/"]
这意味着entrypoint命令始终运行,并且只有明确传递ARG时,CMD
中的所有内容才适用。在您的情况下,您正在添加自己的论点:
'-video-output-dir /output'
这意味着不再应用CMD
节内容。但是-conf
是必需的参数,默认为config/browsers.json
,而不是/etc/selenoid/browsers.json
。因此,正确的解决方案是将-conf /etc/selenoid/browsers.json
添加到您的表达式中。