我正在尝试为詹金斯改编一个码头工人版本。我正在关注我们的 docker-compose 文件,我正在创建一个 Jenkinsfile 来创建每个容器并将它们链接在一起。我遇到的问题是 docker-compose 文件声明的上下文不是 Dockerfile 所在的位置。据我了解,jenkins 会将上下文设置为 Dockerfile 所在的位置,这会将要复制的文件放置在不同的相对位置,具体取决于 jenkinsfile 或 docker-compose 文件是否正在构建。
文件夹结构为:
workspace
|-docker
|-db
|-Dockerfile
|-entrypoint.sh
这就是 Dockerfile 为相关文件声明 COPY 指令的方式
COPY docker/db/entrypoint.sh /
这就是我的 jenkinsfile 构建文件的方式。据我所知,将上下文放在该目录中
docker.build("db", "${WORKSPACE}/docker/db")
docker-compose 文件将其声明为:
db:
build:
context: .
dockerfile: docker/db/Dockerfile
它将上下文置于项目的根目录。
有没有办法告诉 jenkinsfile 使用与 docker-compose 文件相同的上下文,以便 Dockerfile 的 COPY 指令可以保持不变并且对 Jenkins 和 docker-compose 都有效?如果那不可能,有没有人知道任何替代解决方案?