Jenkins Docker Run和Sh脚本同时进行

时间:2018-08-09 17:06:40

标签: shell docker jenkins continuous-integration containers

是否可以在不使用docker文件的情况下在docker运行期间运行shell命令?

我现在所拥有的就是这个,但是似乎启动了容器,然后再运行sh脚本。我需要在容器运行期间设置用户,因为它以超级用户特权运行(如果我输入错了,请纠正我)。

node('linuxNode') {

    docker.image('docker/repo').inside(
        '--privileged ' + 
        '--volume "...") 
    {
        sh '/home/path/to/script/createNewUser.sh'
    }
}

1 个答案:

答案 0 :(得分:0)

解决了我的问题,在我以'-v ____'+'-v ____'+ ...形式给出参数之前,由于某种原因,jenkins docker工作流插件正在扰乱此参数的顺序。因此,我在末尾加上了一个长命令sh。

多数情况下应该可以解决该问题,但是在我的情况下,进一步的麻烦是,docker文件在我的参数之后添加了其他参数(主要是环境变量),因此sh命令仍然不是最后一个。

因此,我不得不放弃docker.image()。inside并使用

docker run -d -t -v _____ script.sh docker exec containername {sh command}

启动容器并在其中运行其他命令。