[英]Jenkins docker.inside() and shared volumes
在 Jenkins 工作中,當我在另一個容器中運行一個容器時,我會共享一些文件夾。
運行了三個系統
我可以使用“-v”選項在主機和 MySql 容器之間共享一個文件夾。 但是我如何在 Docker 和 Alpine 之間或在 Mysql 和 Alpine 之間共享它? 是否可以使用“--volumes-from”在兩個容器之間共享文件夾?
pipeline {
agent none
stages {
stage('Run Tests') {
parallel {
stage("Dbms") {
agent { label 'docker' }
steps {
script {
docker.image("mysql:5").withRun('-e "MYSQL_ROOT_PASSWORD=my-secret-pw" -v /home/jenkins:/home/jenkins:rw,z') { c ->
docker.image("maven:3.6-ibmjava-8-alpine").inside("--link ${c.id}:db") {
sh 'echo "Hello from Alpine"'
}
}
}
}
}
}
}
}
}
我做到了。 解決方案是添加選項--name和選項--volumes-from ,如下例所示:
pipeline {
agent none
stages {
stage('Run Tests') {
environment {
IMAGE1 = "alpine:latest"
IMAGE2 = "jacobalberty/firebird:fbconsist"
}
parallel {
stage("Dbms") {
agent {
label 'docker'
}
steps {
script {
docker.image("${env.IMAGE2}").withRun('-p 3051:3050 -e ISC_PASSWORD=masterkey -v /home/jenkins/firebird:/firebird/data:rw,z --name firebird') { c ->
docker.image("${env.IMAGE2}").inside("--link ${c.id}:db --volumes-from firebird") {
// Wait until the service is up
sh 'while (! nc -v -z -w5 db 3050); do; sleep 1; done'
sh 'echo "OK Firebird is running"'
}
docker.image("${env.IMAGE1}").inside("--link ${c.id}:db --volumes-from firebird") {
sh 'echo "Hello from Alpine. From here Firebird is running on the host db, port 3050"'
}
}
}
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.