【问题标题】:how to make jenkins pipeline to run docker commands on remote server如何使詹金斯管道在远程服务器上运行 docker 命令
【发布时间】:2020-06-12 14:52:19
【问题描述】:

我有 2 个 ec2 实例 第一个:托管 jenkins 和 docker,它从 jar 文件构建图像,然后将其推送到 docker hub repo

第二个:这将是我的应用程序服务器,它将包含 docker,它将从 docker hub 中提取此图像并在 docker 引擎上运行容器

我已经完成了创建图像并将其推送到 docker hub 的第一部分

我的问题是如何从 jenkins 管道执行 docker 命令到我的应用程序服务器以从 docker hub 拉取图像并运行它

【问题讨论】:

    标签: docker jenkins ssh jenkins-pipeline


    【解决方案1】:

    您可以使用 Jenkins SSH 插件 (https://plugins.jenkins.io/ssh/) 并添加构建步骤以使用 ssh 在远程主机上执行 shell 脚本

    或者跑 ssh user@host "docker pull <image> && docker run <image>"

    【讨论】:

    • 谢谢你的回答,这是完美的,但我正在寻找一个插件或我可以在管道代码中使用的东西,我可以使用你在管道中提出的第二个选项作为 sh cmd,但是这是最好的方法吗?
    • 因为这个例子是最好的方法,只要你把传递给 docker 容器的变量保存在秘密中。在我看来,最好的方法是使用 docker-compose 或 kubernetes,它仍然会通过 ssh 执行命令,但是当您查看 .yaml 文件时,您可以清楚地了解部署的内容。如果这是生产,您应该使用其中一种编排系统。
    【解决方案2】:

    我找到了解决问题的方法

    我在 jenkins 上使用了 SSH Steps 插件 插件

    其在管道中的写法如下:

        stage('run commands on remote server') {
            steps { 
                script {
                    def remote = [:]
                    remote.user = 'ec2-user'
                    remote.host = 'public or private ip of the remote server'
                    remote.name = 'ec2-user'
                    remote.identityFile = 'path for your ec2 private key'
                    remote.allowAnyHosts = 'true'
                    sshCommand remote: remote, command: 'your command 1 here'
                    sshCommand remote: remote, command: 'your command 2 here'
                }
            } 
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2019-06-21
      相关资源
      最近更新 更多