【问题标题】:How to run docker-compose up before spring-boot:run goal using Maven?如何在spring-boot之前运行docker-compose:使用Maven运行目标?
【发布时间】:2020-11-18 04:54:04
【问题描述】:

我有一个 SpringBoot 应用程序,我可以使用 ./mvnw spring-boot:run 从 CLI 或 IDE 运行它。我有一个 docker-compose.yml 文件,其中包含 PostgresLocalstack 等相关服务。

我想在使用 Maven 自动触发 spring-boot:run 目标之前调用 docker-compose up

使用 Gradle,我可以简单地使用 dependsOn 在运行任务之前启动 docker 容器。 我不知道如何使用 Maven 生命周期阶段来解决这个问题。有什么帮助吗?

【问题讨论】:

  • 我强烈建议使用testcontainers.org 处理此类事情,因为这是一个 E2E 测试......通过 Testcontainers 定义您需要的服务并在您的 IDE 中运行您的 e2e 等......
  • 我正在使用测试容器进行测试。但我也想在本地运行需要通过 docker 容器运行的 DB、AWS 等应用程序。
  • DB 可以在 Docker 包含中运行,因此可以在 Testcontainers ... AWS 中完成?它的哪些部分?
  • 我使用 S3、SQS 服务和 Localstack docker 容器。

标签: java spring-boot docker maven


【解决方案1】:

我知道这是一个老问题,但我已经有同样的问题,而且我已经找到了解决方案。为此,我添加了插件exec-maven-plugin 并在validate 阶段执行了 docker-compose.yml 文件:

    <build>
    <plugins>
        <plugin>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <groupId>org.codehaus.mojo</groupId>
            <executions>
                <execution>
                    <id>Run Containers</id>
                    <phase>validate</phase>
                    <configuration>
                        <executable>docker-compose</executable>
                        <commandlineArgs>up --detach</commandlineArgs>
                    </configuration>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

但是你需要将撰写文件放在项目的根文件夹中。

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 2019-05-31
    • 2021-10-12
    • 1970-01-01
    • 2019-04-09
    • 2020-10-30
    • 2018-12-16
    • 2018-12-03
    • 1970-01-01
    相关资源
    最近更新 更多