如何在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的位置。