java - 使用远程调试运行 docker-compose。英特尔,Java 11
问题描述
我将指南中的步骤应用于我的项目(https://www.jetbrains.com/help/idea/run-and-debug-a-spring-boot-application-using-docker-compose.html)。总而言之,我将此行添加到 Dockerfile-Djava.security.egd=file:/dev/./urandom
并将命令添加到 docker-compose command: java -Djava.security.egd=file:/dev/./urandom -jar /usr/app/test-app.jar
。在 docker-compose 中点击命令附近的调试按钮后,远程配置为:
Debugger mode: Attach to remote JVM
Transport: Socket
Host: localhost
Port: 5005
Command line arguments for remote JVM: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005;
Docker Compose 运行配置(启动前)选项:
--------------------------------------------------
Port | Local port | Container port |
-------------------------------------------------|
Java Debugger port | 5005 | 5005 |
--------------------------------------------------
Custom command: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -Djava.security.egd=file:/dev/./urandom -jar /usr/app/test-app.jar
Custom options: -p 5005:5005
运行我收到异常的配置:
Error running 'Remote JVM Debug with compose': Unable to open debugger port (localhost:5005): java.net.ConnectException "Connection refused: connect"
我试图通过将地址更改为来解决这个问题*:<port>
。生成的自定义命令是
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 -Djava.security.egd=file:/dev/./urandom -jar /usr/app/test-app.jar
. 然后我得到异常:
Error running 'Remote JVM Debug with compose': Unable to open debugger port (localhost:5005): java.io.IOException "handshake failed - connection prematurally closed"
。我也尝试将端口更改为8080,但结果是一样的。如何解决此问题并使用 docker-compose 进行远程配置(启动前)?演示问题的项目:https ://github.com/leonaugust/intelij_docker_problem
Dockerfile
# Build stage
FROM maven:3.6.0-jdk-11-slim AS build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean package -DskipTests
# Run stage
FROM adoptopenjdk/openjdk11:alpine-jre
COPY --from=build /usr/src/app/target/test-app.jar /usr/app/test-app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar", "-Djava.security.egd=file:/dev/./urandom","/usr/app/test-app.jar"]
码头工人-compose.yml
version: '3.1'
services:
test-app:
build: .
container_name: test-app
image: test-app
ports:
- 8080:8080
command: java -Djava.security.egd=file:/dev/./urandom -jar /usr/app/test-app.jar
解决方案
Dockerfile
试一试:
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar","/usr/app/test-app.jar"]
推荐阅读
- css - 在每个部分应用 ngClass
- c# - 未找到动态 MediatR 请求处理程序
- applescript - 苹果脚本 | 属性“AXFrontmost”,为什么不能设置为false?
- vhdl - 如何使用 VHDL 计算家庭教练的 RPM
- postgresql - JPQL 使用具有动态排序依据和限制的查询创建新对象
- android - 制作阻止应用程序添加的中间件?
- java - [JAVA]如何在此处添加此数组代码?
- mysql - 如何在 codeigniter 查询生成器中使用“UNION”?
- amcharts - AMCharts - 将子项动态添加到树状图
- ios - 表视图没有快速重新加载