清理Jenkins中的docker compose数据卷
我有一个基于Docker和Docker compose文件的项目,我想通过Jenkins进行测试 我们有许多docker compose文件用于测试,所有这些文件都写入到相对于项目根目录的清理Jenkins中的docker compose数据卷,docker,jenkins,docker-compose,jenkins-pipeline,Docker,Jenkins,Docker Compose,Jenkins Pipeline,我有一个基于Docker和Docker compose文件的项目,我想通过Jenkins进行测试 我们有许多docker compose文件用于测试,所有这些文件都写入到相对于项目根目录的data目录中,例如 version: '3.1' services: simple: build: context: . dockerfile: ./Dockerfile-standalone ports: - "1005:1005" volume
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
,所以这不是一个选项
我至少需要本地文件系统上可用的logs目录,以便从Jenkins作业运行一些检查
如何确保在生成结束时删除包含数据卷的整个
数据
目录?最简单的方法是让docker通过在撰写文件中使用命名卷来管理卷,例如:
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
in for me)。但最重要的是,它们可以通过docker卷进行管理。Docker compose甚至为使用Docker compose down--volumes
删除这些卷提供了一个很好的速记。根据文档,此参数将删除在Compose文件的volumes部分中声明的命名卷以及附加到容器的匿名卷
我的清理脚本现在可以简单地调用docker compose down--volumes
最简单的方法是让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存储在一个私有区域中(/var/lib/docker
in for me)。但最重要的是,它们可以通过docker卷进行管理。Docker compose甚至为使用Docker compose down--volumes
删除这些卷提供了一个很好的速记。根据文档,此参数将删除在Compose文件的volumes部分中声明的命名卷以及附加到容器的匿名卷
我的清理脚本现在可以简单地调用docker compose down--volumes
我遇到了一个类似的问题,并在容器中使用chmod
解决了这个问题,在它执行了我需要的功能之后,就可以删除它作为jenkins用户创建的目录。我确信有更好的解决方案,但这对我来说很有效。我遇到了一个类似的问题,在容器中使用chmod
解决了这个问题,在它执行了我需要的功能之后,我就能够删除它作为jenkins用户创建的目录。我相信有更好的解决办法,但这对我来说很有效。