【发布时间】:2017-11-09 08:45:04
【问题描述】:
问题是如何在VSTS中运行一个Docker数据库镜像,然后运行一个Maven任务来打包一个Spring Boot应用。
目标是能够在构建完成后使用可销毁的真实数据库执行集成测试。
【问题讨论】:
标签: docker spring-boot azure-devops azure-pipelines
问题是如何在VSTS中运行一个Docker数据库镜像,然后运行一个Maven任务来打包一个Spring Boot应用。
目标是能够在构建完成后使用可销毁的真实数据库执行集成测试。
【问题讨论】:
标签: docker spring-boot azure-devops azure-pipelines
PostgreSQL 在数据库容器中使用,可以是任何数据库。创建一个 Docker 运行任务。确保选择在后台运行
下一步很重要,VSTS 将不允许您通过 localhost 或 127.0.0.1 连接到正在运行的数据库容器。使用 shell 脚本找出正在运行的数据库容器的 IP。
#!/usr/bin/env bash
IP=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' database`
echo "##vso[task.setvariable variable=SPRING_DATASOURCE_URL;]jdbc:postgresql://$IP:5432/myDatabase"
此脚本将找出容器的 IP 并根据 IP 创建数据源 URL。
像往常一样运行 Maven 包,现在您可以针对数据库进行测试、运行 liquibase/flyway 等...而无需担心维护外部数据库以进行集成测试。
确保在构建清理过程中移除 Docker 容器。
【讨论】:
我们的构建代理是基于 *nix 的机器。我们将服务和 Postgres DB 创建为 docker 镜像,并使用 tmpfs 进行集成测试。
更多详情请参考以下博客
https://vladmihalcea.com/how-to-run-integration-tests-at-warp-speed-with-docker-and-tmpfs/
【讨论】: