【问题标题】:Development workflow for Spring Boot + Maven + Docker + IntelliJSpring Boot + Maven + Docker + IntelliJ 的开发工作流程
【发布时间】:2019-11-03 14:23:04
【问题描述】:

我想就标题中提到的堆栈应用程序的开发工作流程提出一些建议。在我改用 Docker 之前,我所要做的就是:

  1. 去start.spring.io下载project starter
  2. 将其导入 intelliJ
  3. 开发功能,点击绿色箭头启动应用程序或红色方块停止并在每次更改代码时重复它

现在,当我切换到 docker 时,在第 2 步之后,我会这样做:

  1. 创建 Dockerfile 和 docker-compose.yml(我在这里启动我的应用程序和 mysql 服务)。
  2. 右键单击 docker-compose 并点击运行。然后它构建我的应用程序映像(我在运行配置中使用 --build 标志,因此每次我在 docker-compose 上运行时它都会构建映像)并启动两个服务:app 和 mysql,一切正常。

问题是当我在我的代码中更改某事时,我必须:

  1. 手动执行 mvn clean 和安装步骤,在 /target 文件夹下生成新的 jar
  2. 然后停止之前的 docker compose 并再次运行它。然后它根据 /target 中的内容构建新图像

我更喜欢一键式解决方案,就像我开始使用 docker 之前那样。因此,当我更改代码时,只需按一个按钮,就会生成新图像并在应用所有更改的情况下运行。是否可以?我错过了什么吗?你能告诉我你的工作流程是否和我的相似吗?也许您可以推荐一些工具或不同的配置?

【问题讨论】:

  • 你为什么不创建一个脚本?
  • 你不需要做mvn clean install,只需mvn clean package就足够了。问题是你为什么使用 Docker?真的需要吗?只需在您的 IDE 中运行代码运行测试等? CI 解决方案使用mvn clean deploy 在我们的存储库管理器中发布工件(如果需要,我们可能会生成一个 docker 映像)......但我不在本地这样做......很少......

标签: java maven docker intellij-idea docker-compose


【解决方案1】:

您可以设置 Spring Boot 开发工具以在 Docker 容器内实时重新加载。

确保 spring-boot-devtools 依赖项在您的 pom.xml 中:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
  <optional>true</optional>
</dependency>

然后用

创建一个docker-compose.yml文件
version: '3.1'
services:
  backend:
    image: maven:3.6.3-jdk-8
    command: mvn spring-boot:run
    ports:
      - 8000:8000
    volumes:
      - .:/usr/src/mymaven:rw
    working_dir: /usr/src/mymaven

这使用Maven Docker image,因此当您运行docker-compose up 时,它将运行图像并将您的源代码文件夹映射为一个卷。然后 maven 将使用 mvn spring-boot:run 运行应用程序

每当您对源代码进行更改时,它都会重新加载与mvn spring-boot:run 相同的功能。

【讨论】:

  • 我必须另外:文件->设置->构建、执行、部署→编译器并启用“自动构建项目”,然后:文件→设置→高级设置并启用“允许自动生成”即使开发的应用程序当前正在运行,也要启动。
  • 我的指令不需要特定的IDE,你可以使用命令行运行。但 IntelliJ 可能需要额外的配置
【解决方案2】:
  1. 创建一个单独的发布模块 - project-name-release - 删除旧镜像,构建新镜像并运行/发布它
  2. 在配置中使用docker maven plugin

示例项目 - https://github.com/spring-guides/gs-spring-boot-docker

【讨论】:

    猜你喜欢
    • 2015-12-14
    • 2015-12-16
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2017-12-14
    相关资源
    最近更新 更多