当前位置: 首页 > 知识库问答 >
问题:

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

佘飞鸣
2023-03-14

通过使用jenkins,我创建了一个“管道”类型的项目。我设置了“来自SCM的管道”来获取< code>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映像。

我该如何解决问题?

共有1个答案

谭畅
2023-03-14

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

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

变量scm在使用"Pipeline from SCM"时由Jenkins设置,并指向Jenkins获取Jenkinsfile的位置。

 类似资料:
  • 问题内容: 通过使用詹金斯,我创建了一个“管道”类型的项目。然后将“ SCM管道”设置为。您可以检查我的GitHub存储库: 我想使用Jenkins管道构建docker映像。这是Jenkinsfile: Dockerfile也非常简单: 当我运行项目时。我收到以下错误: 这是完整的控制台输出 我检查了工作区: 测试 目录中什么都没有,但是Jenkinsfile和Dockerfile都在 test

  • 我是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