gpt4 book ai didi

java - 在 Docker 容器上开发 Java (Maven) 应用程序

转载 作者:行者123 更新时间:2023-12-01 19:38:16 30 4
gpt4 key购买 nike

对于一个新的 Spring 项目,我想设置一个 Docker 容器来构建 + 运行 + 调试我的应用程序。

目前我正在使用这个 Dockerfile:

FROM maven:3.6.2-jdk-8-slim
COPY . /app/
WORKDIR /app/
RUN mvn clean package

FROM maven:3.6.2-jdk-8-slim
COPY target/app.jar app.jar
ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", "-jar","/app.jar"]
EXPOSE 5005

第一步是构建项目。在第二步中,运行应用程序并公开 5005 端口以进行“远程”调试。

然后从我的 IDE (IntelliJ IDEA) 中配置远程调试配置以在容器上执行调试。

正如您可能猜到的那样,对于我想在项目中调试的每个小编辑执行这些步骤有点尴尬。

所以,我想知道是否有更实用的方法使用 IntelliJ 自动构建调试器并将其附加到我的应用程序,就像直接在我的开发机器上开发一样......

最佳答案

首先,您可以直接从 IntelliJ 打开一个 pom.xml 并运行该应用程序,而无需运行 maven(IntelliJ 有一个出色的 maven 插件)。

由于您将其作为 java -jar 运行,因此您甚至不需要 IntelliJ 的终极版本。

现在这就是我们通常开发的方式,甚至在maven之前也是如此。如果您想检查测试是否运行(同样,您也可以在 Idea 中执行此操作),您也可以在本地运行 mvn clean package。当您推送更改时,创建一个 Docker 并部署在服务器上。

这是迄今为止我可以推荐的最佳解决方案。您在问题中描述的方式更适合调试远程服务器(读取就绪环境)。

如果您绝对需要这种方式,您仍然可以使用 JVM 的 HotSwap 功能进行小的更改(只要这些更改位于方法内部):通过远程调试器连接时,右键单击并“重新编译”具有改变。它将自动加载到远程 JVM,因此您实际上不需要触发所有这些过程。

您也不必在 Maven 中运行所有测试(mvn clean package -Dmaven.tests.skip)

关于java - 在 Docker 容器上开发 Java (Maven) 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59192511/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com