Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker init not working for Java programming language #7171

Closed
NileshGule opened this issue Feb 5, 2024 · 4 comments
Closed

Docker init not working for Java programming language #7171

NileshGule opened this issue Feb 5, 2024 · 4 comments

Comments

@NileshGule
Copy link

Description

I tried using Docker init command for Java
After the Dockerfile and Compose files are created, when I try to run the docker compose up --build command, I get the following error and the container exits

image

This is caused due to a faulty instruction in the generated Dockerfile
The last line for the ENTRYPOINT instruction is generated as
ENTRYPOINT [ "java", "org.springframework.boot.loader.launch.JarLauncher" ]

This should not contain the launch word and if I update the line as follows it works perfectly fine
ENTRYPOINT [ "java", "org.springframework.boot.loader.JarLauncher" ]

Reproduce

Create a spring Boot project before running Docker init command

docker init

select Java as the programming language
Select Java 17 as the version
Specify the port as 8080

Once the 4 files are generated as the output of the docker init command, run the application by executing the command

docker compose up --build

Docker version
image

Docker info
image

Expected behavior

The spring boot application should start on port 8080 and be accessible via http://localhost:8080/greeting endpoint

docker version

Client:
 Cloud integration: v1.0.35+desktop.10
 Version:           25.0.2
 API version:       1.44
 Go version:        go1.21.6
 Git commit:        29cf629
 Built:             Thu Feb  1 00:18:45 2024
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.27.1 (136059)
 Engine:
  Version:          25.0
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.6
  Git commit:       fce6e0ca9bc000888de3daa157af14fa41fcd0ff
  Built:            Thu Feb  1 00:15:46 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker info

Client:
 Version:    25.0.2
 Context:    desktop-linux
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.12.1-desktop.4
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.24.3-desktop.1
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-compose
  debug: Get a shell into any image or container. (Docker Inc.)
    Version:  0.0.22
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-debug
  dev: Docker Dev Environments (Docker Inc.)
    Version:  v0.1.0
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-dev
  extension: Manages Docker extensions (Docker Inc.)
    Version:  v0.2.21
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-extension
  feedback: Provide feedback, right in your terminal! (Docker Inc.)
    Version:  v1.0.4
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-feedback
  init: Creates Docker-related starter files for your project (Docker Inc.)
    Version:  v1.0.0
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-init
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
    Version:  0.6.0
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-sbom
  scout: Docker Scout (Docker Inc.)
    Version:  v1.3.0
    Path:     /Users/nileshgule/.docker/cli-plugins/docker-scout
WARNING: Plugin "/Users/nileshgule/.docker/cli-plugins/docker-scan" is not valid: failed to fetch metadata: fork/exec /Users/nileshgule/.docker/cli-plugins/docker-scan: no such file or directory

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 1
 Server Version: 25.0
 Storage Driver: stargz
  driver-type: io.containerd.snapshotter.v1
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  seccomp
   Profile: unconfined
  cgroupns
 Kernel Version: 6.6.12-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: aarch64
 CPUs: 12
 Total Memory: 7.657GiB
 Name: docker-desktop
 ID: db4cb4f7-5494-4393-a573-6661e9c306bb
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5555
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: daemon is not using the default seccomp profile

Diagnostics ID

48210DFC-C503-4D39-8DF3-FF47F7A9E694/20240205095909

Additional Info

No response

@lizzthabet
Copy link

thanks for the detailed report, @NileshGule! it looks like the JarLauncher class was moved in spring boot 3.2 (for reference: spring-projects/spring-boot#37667). we can improve how docker init generates the Dockerfile in this case.

out of curiosity, do you have an explicit spring boot version defined in your pom.xml?

@NileshGule
Copy link
Author

hi @lizzthabet,
I used the Spring Boot CLI to generate the project.
The generated POM file has Spring Boot version as 3.1.0

You can find the complete source code in the GitHub repo
https://github.com/dockersamples/docker-init-demos/tree/main/java

@lizzthabet
Copy link

thanks, @NileshGule! this should be fixed in the next release of docker desktop (hopefully out in the next week or so). docker init will try to parse a spring boot version from the pom.xml and use the correct launch class. really appreciate you taking the time to open an issue!

@NileshGule
Copy link
Author

thanks, @NileshGule! this should be fixed in the next release of docker desktop (hopefully out in the next week or so). docker init will try to parse a spring boot version from the pom.xml and use the correct launch class. really appreciate you taking the time to open an issue!

Thanks @lizzthabet. Glad that my little experimentation with Docker init will provide a better experience for SPring Boot developers in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants