You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins CI/CD中如何调用子文件夹内的Dockerfile构建镜像

子目录存放Dockerfile时的Jenkins镜像构建方法

先明确docker build命令两个路径参数的作用,别搞混逻辑:

  • -f 参数:仅用来指定Dockerfile文件本身的实际存储位置
  • 命令末尾的路径:是Docker构建的上下文根目录,构建过程中所有COPY/ADD操作只能引用这个目录范围内的文件

可直接复用的构建命令

你之前根目录构建的命令里-f后多打了一个多余空格,修正后根据实际需求选对应命令即可。

场景1:Dockerfile内需要引用子目录外的文件(保留仓库根目录为构建上下文)

针对你给出的示例路径thismyapp/dashboard/dockerfile,直接替换-f对应的文件路径就行:

sh 'docker build -t image_name:image_tag -f ./thismyapp/dashboard/dockerfile .'

如果执行shell命令前,Jenkins已经把当前工作目录切到了thismyapp文件夹下,把-f后的路径简化为./dashboard/dockerfile即可。

场景2:所有构建依赖都在dashboard子目录内(推荐,构建速度更快)

如果项目代码、配置文件等构建需要的资源全部存放在thismyapp/dashboard/目录下,不需要引用外层文件,直接把构建上下文切到该子目录即可,不用写长路径指定Dockerfile:

sh 'docker build -t image_name:image_tag -f ./dockerfile ./thismyapp/dashboard'

这种方式Docker不会打包上下文外的无关文件传给构建进程,能明显提升构建速度,也能避免无关文件被意外打入镜像。


踩坑提醒

  • Linux环境下文件名大小写敏感,dockerfile和Dockerfile是完全不同的两个文件,写路径时要和仓库内实际文件名完全一致,否则会报找不到Dockerfile的错误
  • 不要随意把构建上下文路径设为系统根目录/,会导致整个磁盘的文件都被打包进构建上下文,大概率直接把构建节点跑挂
  • 如果用Jenkins Docker插件而非手写shell命令构建,只需要在插件配置项里分别填写Dockerfile路径、构建上下文路径即可,底层逻辑和命令行完全一致

内容的提问来源于stack exchange,提问作者Bootable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:24:25