【发布时间】:2021-02-04 08:10:13
【问题描述】:
我有一个 Java 应用程序 (.tar) 已安装到容器中。容器的entrypoint 启动该应用程序。
Dockerfile(后端文件夹作为卷挂载到镜像中)
FROM openjdk:11.0.7
ENTRYPOINT /backend/entrypoint.sh
entrypoint.sh
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Xmx2048M -jar backend.jar
现在我想使用 VSCode 的调试器来调试正在运行的应用程序。根据官方 VSCode 文档 (blog: inspecting containers),这可以通过命令面板和命令 Debugger: attach to Node.js process 轻松完成。
但在他们的示例中,他们使用的是 Node.js 服务器。但是,在我的容器中,没有可以将调试器附加到的 Node.js 进程,并且我找不到适用于 Java Spring 应用程序的命令。 那么如何将 VSCode 的 Java 调试器附加到已经在 Docker 容器中运行的 Java 应用程序?
在他们的文档 (containers: debug common) 的另一个地方,他们声明如下:
Docker 扩展目前支持在 Docker 容器中调试 Node.js、Python 和 .NET Core 应用程序。
所以那里没有提到 Java,但在另一个地方 (remote: debugging in a container) 他们清楚地谈论了 Java 应用程序:
例如,将其添加到 .devcontainer/devcontainer.json 将设置 Java 主路径: “设置”:{“java.home”:“/docker-java-home”}
【问题讨论】:
-
将tar文件复制到容器中,然后使用启动脚本解压
-
@Ashok 这如何帮助我调试应用程序?
-
基本上,你的要求是你想在你的容器中执行java?