Jul*_*ian 12 docker jenkins-pipeline jenkinsfile
我正在尝试为jenkins调整一个docker build.我正在关注我们的docker-compose文件,我正在创建一个创建每个容器并将它们链接在一起的Jenkins文件.我遇到的问题是docker-compose文件声明了一个不是Dockerfile所在的上下文.据我所知,jenkins会将上下文设置为Dockerfile所在的位置,这会根据jenkinsfile或docker-compose文件的构建方式将文件复制到不同的相对位置.
文件夹结构是:
workspace
|-docker
|-db
|-Dockerfile
|-entrypoint.sh
Run Code Online (Sandbox Code Playgroud)
这就是Dockerfile如何为相关文件声明COPY指令
COPY docker/db/entrypoint.sh /
Run Code Online (Sandbox Code Playgroud)
这是我的jenkinsfile构建文件的方式.据我所知,将上下文放在该目录中
docker.build("db", "${WORKSPACE}/docker/db")
Run Code Online (Sandbox Code Playgroud)
docker-compose文件声明如下:
db:
build:
context: .
dockerfile: docker/db/Dockerfile
Run Code Online (Sandbox Code Playgroud)
它将上下文置于项目的根源.
有没有办法告诉jenkinsfile使用与docker-compose文件相同的上下文,以便Dockerfile的COPY指令可以保持不变并对Jenkins和docker-compose都有效?如果那是不可能的,有没有人知道任何替代解决方案?
Jul*_*ian 24
事实证明,我正在拉动docker-pipeline-plugin的先前版本(1.6).有问题的函数已经更新(1.7),以允许第二个参数指定上下文之外的Dockerfile位置.
我的Jenkinsfile中更新的语句是:
return docker.build("db", "-f docker/db/Dockerfile .")
Run Code Online (Sandbox Code Playgroud)
这允许我的容器构建而无需修改开发人员的docker-compose或Dockerfiles的预期上下文.
| 归档时间: |
|
| 查看次数: |
13103 次 |
| 最近记录: |