You have a Java Spring Boot application built with Gradle in a Docker container and you need to debug it from your favorite IDE on your host machine (IntelliJ).
You can do it by attaching the remote debugger in IntelliJ to your Java application running in Docker.
In this example the Java container is created using
docker-compose. All you need to do here is to open the port
Run --> Edit Configuration --> Add new configuration --> Remote
The default port is exactly the
:5005. Be sure that the debugger mode is on Attach. Give it a name to this configuration (i.e.: Docker debugger)
You need to also add an additional option in your gradle command:
--debug-jvm. Say you need to debug an integration test, all you need to do is this:
./gradlew integrationTest --debug-jvm
docker-compose up -d and your integration tests automatically start. After few seconds, the execution will stop exactly when Spring starts the integration tests and it will show a message like
Execution waiting on port :5005.
What you need to do here is:
- put a breakpoint somewhere in the code in IntelliJ
- Start the Remote debugger in IntelliJ (the Docker debugger) you created previously
The remote debugger will unfreeze the integration tests in Docker and your breakpoint will fire up as soon as the execution gets there.