当前位置: 首页 > 面试题库 >

如何使用Jenkins管道构建Docker映像?

冯阳成
2023-03-14
问题内容

通过使用詹金斯,我创建了一个“管道”类型的项目。然后将“
SCM管道”设置为Jenkinsfile。您可以检查我的GitHub存储库:

我想使用Jenkins管道构建docker映像。这是Jenkinsfile:

node {
   sh "docker build -t 192.168.59.224:5000/ubuntu-test ."
}

Dockerfile也非常简单:

FROM ubuntu:14.04

RUN sudo apt-get update && sudo apt-get install -y wget

当我运行项目时。我收到以下错误:

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/jenkins_home/workspace/test/Dockerfile: no such file or directory

这是完整的控制台输出

Started by user kai
[Pipeline] node
Running on master in /var/jenkins_home/workspace/test
[Pipeline] {
[Pipeline] sh
[test] Running shell script
+ docker build -t 192.168.59.224:5000/ubuntu-test .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/jenkins_home/workspace/test/Dockerfile: no such file or directory
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE

我检查了工作区:

ls /var/jenkins_home/workspace/test/


ls /var/jenkins_home/workspace/test@script/
Dockerfile
Jenkinsfile

测试 目录中什么都没有,但是Jenkinsfile和Dockerfile都在 test @ script 目录中。

似乎Jenkins仅从存储库中获取Jenkins。当执行Jenkinsfile时,没有Dockerfile便无法构建Docker映像。

我该如何解决这个问题?


问题答案:

您不是在指示Jenkins检出您的存储库。您可以通过checkout scm在调用docker之前添加来做到这一点。像这样:

node {
  checkout scm
  sh "docker build -t 192.168.59.224:5000/ubuntu-test ."
}

scm当您使用“来自SCM的管道”时,变量由Jenkins设置,并指向Jenkins从中获取Jenkinsfile的位置。



 类似资料:
  • 通过使用jenkins,我创建了一个“管道”类型的项目。我设置了“来自SCM的管道”来获取< code>Jenkinsfile。你可以查看我的GitHub库: 我想使用 Jenkins 管道来构建一个 docker 映像。以下是 Jenkinsfile: Dockerfile文件也非常简单: 当我运行这个项目时。我得到以下错误: 这是完整的控制台输出 我检查了工作区: 测试目录中没有任何内容,但J

  • 我是Docker和Jenkins的新手,我正在尝试创建一个Jenkins管道来构建Docker的形象。我在尝试构建时遇到了问题,并不断收到此错误: /var/jenkins_home/workspace/Docker-Pipeline@tmp/耐用-a11b32f8/脚本。sh:第1行:docker:未找到命令 我已经在虚拟机上安装了ubuntu 我正在做和他完全一样的事情,但总是失败。

  • 问题内容: 我有一个Jenkins作为docker容器运行,现在我想使用管道构建Docker映像,但是Jenkins容器总是告诉未找到Docker。 这是我运行詹金斯图像的方式: Jenkins映像的DockerFile是:https : //github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dock

  • 问题内容: 我正在使用Jenkins管道来构建Dockerfile。 泊坞窗文件成功完成所有步骤,并创建了泊坞窗映像。 如图所示: 但是,此后,shell失败并显示以下错误: 尽管成功构建了docker镜像,为什么仍会引发此错误?当我在本地计算机上执行此命令时,命令在“成功标记myapp:latest”上退出 我的Docker版本是18.03.1-ce。 在这个问题上的任何帮助将不胜感激! 问题答

  • 问题内容: 我正在使用Jenkins管道来构建Dockerfile。 泊坞窗文件成功完成所有步骤,并创建了泊坞窗映像。 如图所示: 但是,此后,shell失败并显示以下错误: 尽管成功构建了docker镜像,为什么仍会引发此错误?当我在本地计算机上执行此命令时,命令在“已成功标记myapp:latest”上退出 我的Docker版本是18.03.1-ce。 在这个问题上的任何帮助将不胜感激! 问题

  • 我正在尝试从管道中自动创建Jenkins管道构建。 我有一个管道,它创建一个比特桶存储库并向其提交一些代码,包括一个Jenkinsfile。 我需要向此管道添加另一个步骤,然后为其创建管道生成,这将运行 Jenkinsfile 中的步骤。 我认为Jobs DSL应该能够处理这一点,但我找到的文档非常稀少,我仍然不完全确定是否有可能或如何做到这一点。 任何帮助都将不胜感激。我想生成的Pipeline