Jenkins管道“ sidecar”容器的网络问题

时间:2019-07-14 13:57:48

标签: docker jenkins-pipeline

我看到一些奇怪的行为,试图在管道中使用Jenkins的“ sidecar container”模式。我使用模式的目标是创建一个数据库容器,使用测试数据对其进行初始化,然后在后端应用程序上运行端到端测试。这是阶段的样子(一些细节已删除):

    stage('e2e-test') {
        steps {
            script {
                docker.image('mcr.microsoft.com/mssql/server:2017-latest').withRun(
                    '--network=test_net ' +
                    '--name mssql_dev ' +
                    '--publish 1433:1433 ' + 
                    '--env SA_PASSWORD=password123 ') {

                    docker.image('node:8.16.0-alpine').inside('--network=test_net') {
                        sh '''
                            ./testms.sh
                            sleep 1d
                        '''
                    }
                }
            }
        }
    }

此脚本testms.sh对服务器运行一个简单的sql命令。当脚本在管道中运行时,其中的sql命令将失败,并显示“连接被拒绝错误”。

sleep 1d 命令在那里使容器保持运行,以便我可以在内部的容器中执行命令。如果我

docker exec -it container-id sh

我可以运行相同的脚本(testms.sh),它可以按预期运行。我也可以跑步

docker exec container-id ./testms.sh

,而且效果也符合预期。

任何帮助表示赞赏,我很困惑!

0 个答案:

没有答案