首页 > 解决方案 > 如何使用 docker-compose 将卷从 Jenkins 工作区映射到 Docker 容器

问题描述

我有一个在单独的容器中docker-compose.yaml启动快速服务器和postgres 数据库的设备。postgres 容器将卷映射到db包含数据库种子脚本的文件夹。在本地,docker-compose 运行良好,我可以针对联网容器执行集成测试。但是,相同的脚本在 Jenkins 上运行时会失败,并出现以下错误:

错误:对于数据库无法启动服务数据库:创建挂载源路径'/var/jenkins_home/workspace/project_name/db'时出错:mkdir /var/jenkins_home:只读文件系统

docker-compose.yaml

...

db:
    image: postgres:10.5
    restart: always
    networks:
      - cloud
    environment:
      POSTGRES_USER: someuser
      POSTGRES_PASSWORD: somepassword
      POSTGRES_DB: somedb
    ports:
      - 5432:5432
    volumes:
      - ./db:/docker-entrypoint-initdb.d
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U someuser -d somedb"]
      interval: 10s
      timeout: 5s
      retries: 5

我在几个 地方读到卷需要绝对路径(不是相对路径),但我尝试/var/jenkins_home/workspace/project_name/db对卷配置的左侧进行硬编码无济于事。

标签: postgresqldockerjenkinsdocker-compose

解决方案


推荐阅读