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

时间:2019-03-24 09:46:36

标签: java docker

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

我在Internet上搜索了一些教程,它们提出了诸如spring-dev-tools之类的工具(因为我的java程序是基于spring-boot的程序)。

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

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

有人可以给些提示吗?

1 个答案:

答案 0 :(得分:0)

通过以下操作,我设法完成了这项工作:

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

这是我的dockerfile:

FROM gradle:5.4-jdk12
WORKDIR /app
EXPOSE 8080 5005

这是我的docker-compose.yml:

version: '3'
services:
  app:
    build:
      context: .
    ports:
      - 5005:5005
      - 8080:8080
    volumes:
      - .:/app
    command: ["gradle", "bootRun"]

当我使用docker-compose up运行此程序,然后连接远程调试器时,热重装就起作用了。

我正在从Intellij连接,因此我必须重建项目才能使热重装工作正常。