docker - 从 Dockerfile 构建 Docker 映像导致错误“docker build”需要 1 个参数”
问题描述
我正在尝试使用 Jenkins 管道脚本构建 Docker 映像。当我运行以下代码时,
docker build -f Dockerfile -t spacestudykubernetes /var/lib/jenkins/workspace/cicd/pipeline
我在 Jenkins 管道作业 shell 脚本中添加了这个命令。还有“cd”命令将不起作用。更改目录在 shell 脚本中不起作用。因此,没有直接更改,我给出了完整路径的命令。根据您的命令,它将起作用(放置更改目录后)。我正在尝试从 cicd 文件夹执行,而不是从管道文件夹执行。Dockerfile 位于管道文件夹中。
我的 Jenkins 流水线脚本
pipeline
{
agent any
stages
{
stage ('imagebuild')
{
steps
{
sh 'docker build -f Dockerfile -t spacestudykubernetes /var/lib/jenkins/workspace/cicd/pipeline'
}
}
}
}
错误
我收到如下错误,
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/lib/jenkins/workspace/cicd/Dockerfile: no such file or directory
我没有从 Dockerfile 所在的直接文件夹运行。我的 Dockerfile 位于管道文件夹中。那是我从 SVN 签出的代码。我正在尝试从cicd文件夹运行此命令。我用 -f 参数给出了完整的路径。
解决方案
您错过了命令行末尾的上下文目录。通常很简单.
。Dockerfile
每当您使用时,此目录将作为所有路径的根目录ADD/COPY
,也将作为构建上下文 - 这意味着在执行构建时其内容将被压缩并传递给 docker 守护进程。
cd /var/lib/jenkins/workspace/cicd/pipeline
docker build -f Dockerfile -t spacestudykubernetes .
推荐阅读
- reporting-services - SSRS 报告标题
- python - Matplotlib lib 3d 曲面图,以第 4 维为颜色
- security - AzSK ARM Checker 任务未提供虚拟机 ARM 模板的扫描结果
- mysql - 如何使用流利的 api 在 EF6 中映射值对象标识?
- swift - 如何获得在 Alamofire 中上传 base64 图像的进度?
- vue.js - 如何让父 vue 组件和子 vue 组件使用相同的数据对象?
- r - 一个输入中的 R 闪亮输入以形成下一个输入的输入
- ionic-framework - 无法从 Ubuntu 完全卸载 Ionic
- python - 在字典中搜索一个值以使用它
- javascript - 如何在html输入中获取jquery数组