如何在jenkinsfile中为docker.build设置自定义上下文

我正在尝试修改jenkins的docker build。 我正在关注我们的docker-compose文件,并且我正在创build一个正在创build每个容器并将它们连接在一起的Jenkinsfile。 我遇到的问题是docker-compose文件声明不在Dockerfile所在的上下文。 据我了解,jenkins会将上下文设置为Dockerfile所在的位置,根据是否构buildjenkinsfile或docker-compose文件,将文件复制到不同的相对位置。

该文件夹结构是:

workspace |-docker |-db |-Dockerfile |-entrypoint.sh 

这是Dockerfile如何为有问题的文件声明COPY指令

 COPY docker/db/entrypoint.sh / 

这是我的jenkins文件如何build立文件。 据我所知,这个目录的背景

 docker.build("db", "${WORKSPACE}/docker/db") 

docker-compose文件声明如下:

 db: build: context: . dockerfile: docker/db/Dockerfile 

将上下文置于项目的根源。

有没有什么办法可以告诉jenkinsfile使用与docker-compose文件相同的上下文,以便Dockerfile的COPY指令可以保持不变并且对Jenkins和docker-compose有效? 如果这是不可能的,是否有人知道任何替代解决scheme?

事实certificate,我正在拉动docker-pipeline-plugin的以前版本(1.6)。 有问题的函数已经更新(1.7),允许第二个参数指定上下文之外的Dockerfile位置。

我的Jenkins文件中更新的语句是:

 return docker.build("db", "-f docker/db/Dockerfile .") 

这允许我的容器在不修改开发人员的docker-compose或Dockerfiles的预期上下文的情况下构build。

只是Omnit docker docker-compose context项目,所以它默认为Dockerfile的位置。