![](/img/trans.png)
[英]how to make jenkins pipeline to run docker commands on remote server
[英]How to pull & run docker image on remote server through jenkins pipeline
我有 2 個 aws ubuntu 實例:第一個服務器和第二個服務器。
下面是我的 jenkins 管道腳本,它創建 docker 鏡像並在第一台服務器上運行容器並將鏡像推送到 docker hub 存儲庫。 這工作正常。
我想拉取映像並將其部署在第二台服務器上。
當我通過下面的管道腳本為第二台服務器執行 ssh 但它登錄到第一台服務器時,即使 ssh 憑據('my-ssh-key')是第二台服務器。 我很困惑它是如何登錄到第一台服務器的,我使用觸摸命令進行了檢查,因此該文件是在第一台服務器上創建的。
pipeline {
environment {
registry = "docker-user/docker-repo"
registryCredential = 'docker-cred'
dockerImage = ''
}
agent any
stages {
stage('Cloning Git') {
steps {
git url: 'https://github.com/git-user/jenkins-flask-tutorial.git/'
}
}
stage('Building image') {
steps{
script {
sh "sudo docker build -t flask-app-one ."
sh "sudo docker run -p 5000:5000 --name flask-app-one -d flask-app-one "
sh "docker tag flask-app-one:latest docker-user/myrepo:flask-app-push-test"
}
}
}
stage('Push Image') {
steps{
script {
docker.withRegistry( '', registryCredential ) {
sh "docker push docker-user/docker-repo:flask-app-push-test"
sshagent(['my-ssh-key']) {
sh 'ssh -o StrictHostKeyChecking=no ubuntu@2ndserver && cd /home/ubuntu/ && sudo touch test-file && docker pull docker-user/docker-repo:flask-app-push-test'
}
}
}
}
}
我的問題是,如何通過 jenkins 管道腳本登錄到第二台服務器並在第二台服務器上拉取 docker 鏡像? 幫我找出我做錯的地方。
這與其說是解決方案,不如說是一種替代方案。 您可以將遠程命令作為 ssh 的一部分執行。 這將在服務器上執行命令並斷開連接。
ssh name@ip "ls -la /home/ubuntu/"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.