2017-05-24 118 views
0

我試圖在詹金斯管道中運行碼頭集裝箱。詹金斯碼頭工人 - 運行一個容器,執行shell腳本等

我在Jenkinsfile如下:

stage('test') { 
steps { 
    script { 
    parallel (
     "gatling" : { 
      sh 'bash ./test-gatling.sh' 
    }, 
     "python" : { 
      sh 'bash ./test-python.sh' 
    }) 
       } 
     } 
     } 

test-gatling.sh我有這樣的:

#!/bin/bash 
docker cp RecordedSimulation.scala denvazh/gatling:/RecordedSimulation.scala 
docker run -it -m denvazh/gatling /bin/bash 
ls 
./gatling.sh 

ls命令在那裏只是爲了測試,但是當它執行它列出文件和我的github存儲庫的文件夾,而不是denvazh/gatling容器內的文件。這是爲什麼?我認爲docker run -it [...]命令會打開容器,以便可以在其中運行命令?

================

而且,我怎麼運行的容器,只是有它運行,而不執行裏面的任何命令? (在Jenkins Pipeline ofc)

我想運行:docker run -d -p 8080:8080 -t [my_container]並在端口8080上訪問它。我該怎麼做......?

+0

問題出在您的bash腳本中。只有「/ bin/bash」命令在您的docker中執行。下面的行不會自動在您剛纔調用的bin/bash內部執行。 –

+0

我的Jenkins文件中經常有多個'docker-compose run ..... some command ...'在彼此之後。 –

回答

0

如果任何人有相同或類似的問題,這裏的答案:

  1. 使用docker exec [name of container]命令,並運行一個容器內任意終端命令,添加/bin/bash -c "[command]"

  2. 爲了能夠從第二個容器訪問在任何端口上運行的容器/應用程序,當啓動第二個容器時運行它參數