簡體   English   中英

使用遠程調試運行 docker-compose。 英特爾,Java 11

[英]Run docker-compose with remote debug. Intelij, Java 11

我將指南中的步驟應用於我的項目( https://www.jetbrains.com/help/idea/run-and-debug-a-spring-boot-application-using-docker-compose.html )。 Summarizing, I added this line to Dockerfile -Djava.security.egd=file:/dev/./urandom and command to 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 編寫運行配置(啟動前)選項:

--------------------------------------------------
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 Then I get exception: 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"]

docker-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"]

將 Dockerfile 中的關鍵字ENTRYPOINT DockerfileCMD

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM