在Jenkins清理docker-compose数据卷

我有一个基于Docker和docker-compose文件的项目,我想通过Jenkinstesting。

我们有一些docker-compose文件,我们正在使用这些文件进行testing,所有这些文件都写入到相对于项目根目录的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身份创build数据目录,而且无法从Jenkins清理它。 我不能从jenkins的工作中使用sudo ,所以这不是一个选项。

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

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

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

 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存储在私有区域( /var/lib/docker中)。 但最重要的是,他们可以通过docker volumepipe理。 Docker-compose甚至为使用docker-compose down --volumes删除这些卷提供了一个很好的速记。 根据该文档,此参数将删除在撰写文件的部分中声明的命名卷以及附加到容器的匿名卷。

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