debug spring-boot in docker

18,460

Solution 1

i have to realize that in the dockerFile the Expose command only do the half of work, this mean that only expose the port inside the docker, but not outside, in your example the result will be like this:

enter image description here

Debug works with the JAVA_OPTS and remote debug, the dockerFile looks like this:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar" ]

and executing this command:

docker run -e "JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y" -p 8080:8080 -p 8000:8000 -t springio/gs-spring-boot-docker

As you can see, you should expose the debug port, during the run, in my case(eclipse) 8000

enter image description here

enter image description here

Solution 2

Hi I faced the same problem.

I added the following to the entrypoint in the Dockerfile:

"-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

Now it looks like this:

FROM java:8
VOLUME /tmp
ADD realName*.jar app.jar
EXPOSE 4786
RUN sh -c 'touch /app.jar'
ENTRYPOINT
["java","-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

I did not Exposeport 8000 in the Dockerfile.

Hope this helps.

Share:
18,460
Jarle Hansen
Author by

Jarle Hansen

Updated on June 07, 2022

Comments

  • Jarle Hansen
    Jarle Hansen almost 2 years

    For some reason I have issues connecting remote debug to a spring-boot app running inside docker. I start the java app with:

    java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar app.jar
    

    For docker I expose these ports on docker-compose:

    ports:
    - "8080:8080"
    - "8000:8000"
    

    However, the debugger is not able to connect on port 8000. It works when I run the server locally but not inside docker. Any idea why?

    Docker ps output:

    CONTAINER ID        IMAGE                       COMMAND                CREATED               STATUS              PORTS                                            NAMES
    0d17e6851807        pocmanager_manager:latest   "/bin/sh -c 'java -D   3 seconds ago       Up 2 seconds        0.0.0.0:8000->8000/tcp, 0.0.0.0:8080->8080/tcp   pocmanager_manager_1   
    35ed2e2c32bc        redis:latest                "/entrypoint.sh redi   14 seconds ago      Up 13 seconds       0.0.0.0:6379->6379/tcp                           pocmanager_redis_1