{"id":28135742,"url":"https://github.com/wesleyegberto/java-docker-images","last_synced_at":"2026-05-05T15:35:01.432Z","repository":{"id":74844090,"uuid":"217209673","full_name":"wesleyegberto/java-docker-images","owner":"wesleyegberto","description":"Repo to test different Docker images","archived":false,"fork":false,"pushed_at":"2024-06-16T18:25:56.000Z","size":738,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-16T19:58:19.375Z","etag":null,"topics":["docker","docker-image","graalvm","graalvm-ce","graalvm-native-image","java","openj9","openjdk","spring-boot","taurus"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wesleyegberto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-24T04:15:09.000Z","updated_at":"2024-06-16T18:26:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"168c51f4-85bd-40f5-8b6d-5d9f58f1627c","html_url":"https://github.com/wesleyegberto/java-docker-images","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleyegberto%2Fjava-docker-images","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleyegberto%2Fjava-docker-images/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleyegberto%2Fjava-docker-images/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wesleyegberto%2Fjava-docker-images/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wesleyegberto","download_url":"https://codeload.github.com/wesleyegberto/java-docker-images/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254170123,"owners_count":22026223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","graalvm","graalvm-ce","graalvm-native-image","java","openj9","openjdk","spring-boot","taurus"],"created_at":"2025-05-14T15:19:48.874Z","updated_at":"2026-05-05T15:35:01.368Z","avatar_url":"https://github.com/wesleyegberto.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java Docker Images\n\nRepository to test different Docker images.\n\nProject structure:\n\n* *hello-app*: Spring Boot app with simple REST controller.\n* *hello-app-native*: Spring Boot app with simple REST controller and Native plugin.\n* *images*: printscreens.\n* *taurus*: scenarios script to run Taurus stress test.\n* *ab-test*: script to run a monitored Apache Bench test against a local process.\n\nRecommendations:\n\n* always unpack the JAR\n\n## Build the App\n\nFirst build the app with: `sh build_app.sh`.\n\nTest the app: `curl http://localhost:8080/greetings`\n\n## Build the Docker images\n\nImages:\n\n* OpenJDK\n  * `docker build -t wesleyegberto/hello-app:minimal -f Dockerfile.openjdk_11 .`\n* Open J9\n  * `docker build -t wesleyegberto/hello-app:minimal -f Dockerfile.openj9_11 .`\n* Open J9 Tuned - CDS\n  * `docker build -t wesleyegberto/hello-app:minimal -f Dockerfile.openj9_11_tuned .`\n* Open J9 Tuned - Unpacked, CDS, Lazy Inicialization\n  * `docker build -t wesleyegberto/hello-app:minimal -f Dockerfile.openj9_11_unpacked_lazy .`\n* GraalVM 21 - JVM\n  * `docker build -t wesleyegberto/hello-app:minimal -f Dockerfile.graalvm_21 .`\n* GraalVM 21 - Native\n  * `docker build -t wesleyegberto/hello-app:minimal -f Dockerfile.graalvm_native .`\n* Liberica JVM 21 - AOT and CDS\n  * `docker build -t wesleyegberto/hello-app:minimal -f Dockerfile.liberica_21_cds .`\n\n## Stressing and Stats\n\nRun any of the built Java images binding the port 8080.\n\nThen run stress test with ApacheBench: `sh run_stress_with_ab.sh`\n\nMonitoring docker stats: `docker stats`\n\nHere is a sample from stats output after some minutes of idle (on my machine :p).\n\n![Docker Stats Idle](images/docker_stats_idle.png)\n\nUnder stressing:\n\n![Docker Stats Stressing](images/docker_stats_stressing.png)\n\n### Taurus\n\nRun all containers: `build_and_run_all.sh`\n\nRun Blazemeter container with Taurus tool: `sh run_stress_with_taurus.sh`\n\n## TODO\n\n* [x] Spring Boot splitting the lib and classes\n* [x] Spring Boot Native build\n* [x] Spring Boot Native with GraalVM\n* [x] Spring Boot with AOT and CDS\n\n## Links\n\n* [Spring Boot \u0026 JVM blog post](https://medium.com/@jean_sossmeier/spring-boot-jvm-1eea422be930)\n* [Chris Newland's blog](https://www.chriswhocodes.com/)\n* [GraalVM Native Image Tips \u0026 Tricks](https://jamesward.com/2020/05/07/graalvm-native-image-tips-tricks/)\n* [Efficient containers with Spring Boot 3, Java 21 and CDS by Sébastien Deleuze @ Spring I/O 2024](https://www.youtube.com/watch?v=H2tM7EClyx8)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesleyegberto%2Fjava-docker-images","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwesleyegberto%2Fjava-docker-images","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwesleyegberto%2Fjava-docker-images/lists"}