【问题标题】:How to run a docker container for integration testing a Spring Boot app within VSTS如何在 VSTS 中运行 docker 容器以集成测试 Spring Boot 应用程序
【发布时间】:2017-11-09 08:45:04
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    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 容器。

    【讨论】:

      【解决方案2】:

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

      更多详情请参考以下博客

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

      【讨论】:

        猜你喜欢
        • 2018-07-11
        • 2019-02-06
        • 2018-03-07
        • 2020-04-25
        • 1970-01-01
        • 2018-03-15
        • 2015-10-12
        • 1970-01-01
        • 2018-08-16
        相关资源
        最近更新 更多