在docker中运行的热重载java程序

Shu*_*Shu 5 java docker spring-boot

我开发了一个应该在docker中运行的java程序。但是,我在调试运行在 docker 中的 java 程序时遇到了很多麻烦。

网上查了一下,有些教程提出了spring-dev-tools之类的工具(因为我的java程序是基于spring-boot的程序)。

https://www.youtube.com/watch?v=sz5Zv5QQ5ek

根据这些教程,调试是可以的,例如设置断点和变量监视,但是,当我更新我的代码(例如,某些类)时,这些更改无法立即反映在 docker 中运行的程序中,程序表现得像旧代码。

有人可以给一些提示吗?

the*_*mar 6

我通过执行以下操作成功地完成了这项工作:

  1. 运行时将源代码挂载到容器中
  2. 使用远程调试器连接

这是我的 dockerfile:

FROM gradle:5.4-jdk12
WORKDIR /app
EXPOSE 8080 5005
Run Code Online (Sandbox Code Playgroud)

这是我的 docker-compose.yml:

version: '3'
services:
  app:
    build:
      context: .
    ports:
      - 5005:5005
      - 8080:8080
    volumes:
      - .:/app
    command: ["gradle", "bootRun"]
Run Code Online (Sandbox Code Playgroud)

当我使用它运行docker-compose up然后连接远程调试器时,热重载起作用。

我是从 Intellij 连接的,所以我必须重建项目才能使热重载工作。