清理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

我有一个基于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
,所以这不是一个选项

我至少需要本地文件系统上可用的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用户创建的目录。我相信有更好的解决办法,但这对我来说很有效。