如何运行docker容器以在VSTS中集成测试Spring Boot应用程序

时间:2017-11-09 08:45:05

标签: docker spring-boot azure-devops azure-pipelines

问题是如何在VSTS中运行Docker数据库映像,然后运行Maven任务来打包Spring Boot应用程序。

目标是能够使用可在构建完成后销毁的真实数据库执行集成测试。

2 个答案:

答案 0 :(得分:0)

PostgreSQL正在数据库容器中使用,可以是任何数据库。创建Docker Run任务。请务必选择在后台运行

enter image description here

下一步很重要,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。

enter image description here

像往常一样运行Maven包,现在你可以对数据库进行测试,运行liquibase / flyway等...而不用担心维护外部数据库进行集成测试。

enter image description here

确保在构建清理过程中删除Docker容器。

答案 1 :(得分:0)

我们的构建代理是基于* nix的机器。我们创建服务和Postgres DB作为docker镜像,并使用tmpfs进行集成测试。

请参阅以下博客更多详情

https://vladmihalcea.com/how-to-run-integration-tests-at-warp-speed-with-docker-and-tmpfs/