gpt4 book ai didi

docker - 在 Jenkins 中清理 docker-compose 数据卷

转载 作者:行者123 更新时间:2023-12-02 21:22:17 25 4
gpt4 key购买 nike

我有一个基于 Docker 和 docker-compose 文件的项目,我想通过 Jenkins 对其进行测试。

我们有许多用于测试的 docker-compose 文件,所有这些文件都写入 data。相对于项目根目录的目录,例如

version: '3.1'
services:
simple:
build:
context: .
dockerfile: ./Dockerfile-standalone
ports:
- "1005:1005"
volumes:
- ./data/simple/logs:/launcher/logs
- ./data/simple/repository:/launcher/repository

我遇到的问题是 docker 以 root 身份创建数据目录,并且无法从 Jenkins 中清理它。我不允许使用 sudo从我的 Jenkins 工作,所以这不是一个选择。

我至少需要本地文件系统上可用的日志目录来运行 Jenkins 作业的一些检查。

我怎样才能确保整个 data保存数据卷的目录在构建结束时被删除?

最佳答案

最简单的方法是让 docker 通过在 compose 文件中使用命名卷来管理卷,例如:

version: '3.1'
services:
simple:
build:
context: .
dockerfile: ./Dockerfile-standalone
ports:
- "1005:1005"
volumes:
- simple-logs:/launcher/logs
- simple-repository:/launcher/repository
volumes:
- simple-logs:
- simple-repository:

然后这些卷由 docker 存储在一个私有(private)区域(我是 /var/lib/docker)。但最重要的是,它们可以通过 docker volume 进行管理。 . Docker-compose 甚至为使用 docker-compose down --volumes 删除这些卷提供了一个很好的速记。 .根据文档,该参数删除了在 Compose 文件的卷部分中声明的命名卷和附加到容器的匿名卷。

我的清理脚本现在可以简单地调用 docker-compose down --volumes .

关于docker - 在 Jenkins 中清理 docker-compose 数据卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44001732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com