postgresql - 如何使用 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
对卷配置的左侧进行硬编码无济于事。
解决方案
推荐阅读
- c# - 在哪里验证 ASP.Net Core 应用程序中的 AutoMapper 配置?
- python - 使 Python 中的 C++ 函数超时
- macos - 在 MacOS High Sierra 上从 C/C++ 源构建 Tensorflow 1.8 的错误
- python - 如何在回溯中仅使用 runTest 和 newfunc 来跟踪鼻子测试错误/失败的来源?
- swift - Swift:解析服务器检索数据范围 10...20
- azure - Azure AKS 静态 IP 地址
- jboss - 从另一个 EAR 部署 jar
- android - Firebase 身份验证:无论我尝试什么,身份验证都失败了电子邮件和密码
- r - networkd3 正在显示所有数据,而不是我想根据 Shiny 应用程序中的小部件输入显示的子集
- sas - SAS 是低于目前列中最高数字的数字