How to dockerize your Spring Boot API | Docker Tutorial

Sdílet
Vložit
  • čas přidán 7. 11. 2022
  • A few weeks ago I created a video showcasing how we can set up a simple Spring Boot REST API, I now wanted to showcase how we can move this API into a Docker container and then run it.
    IMPORTANT: OpenJDK is now deprecated and we should use "eclipse-temurin:17" instead. OpenJDK will still work but is not getting any new updates.
    Note that the second line in the Dockerfile does not have any effect in this example; it merely searches for any JAR file, which can then be utilized, as the third line copies the JAR_FILE instead of directly placing the file.
    Spring Boot API Tutorial: • How to create an REST ...
    My channel publishes programming and software engineering videos, especially Java and Python. If that is what you want, do not hesitate to join me on this journey!
    Subscribe to my CZcams channel:
    / @randomcode_0
  • Věda a technologie

Komentáře • 68

  • @cedescc7986
    @cedescc7986 Před měsícem +1

    The video is nice but what impressed me even more is how you try to help almost everyone in the comments. You take time to answer everyone! Probs to you!

  • @2PacFearless
    @2PacFearless Před měsícem

    I have finally found the video how to make docker images with Java on CZcams :). Thanks, for great work and clear explanation. !!!

  • @Elysor832
    @Elysor832 Před 9 měsíci +3

    Literally saved my life Thank you!

  • @andilesimelane4771
    @andilesimelane4771 Před 10 měsíci +4

    Short and clean, thanks you earned and subscriber... I hope I will learn a lot from this channel, I like we you explain even the -d that amazing thanks

  • @theparten
    @theparten Před rokem +1

    thanks hey i was able to spin up my small spring project to a docker image...be blessed❤...

  • @abastecedorademateriales
    @abastecedorademateriales Před 5 měsíci

    awesome content !! thank you very much !!!

  • @szymaniuk1983
    @szymaniuk1983 Před rokem

    maaaan this is a good guide. Nice work man

  • @ayushkumarsaksena7996
    @ayushkumarsaksena7996 Před 5 měsíci

    Appreciate the simple explanation.
    Hope you make some more videos on Kafka end-to-end videos😅
    Context: Struggling with edl kafka changes in docker file.

  • @samorita89
    @samorita89 Před 9 měsíci +2

    Short and helpful, Thanks for the video!

    • @Randomcode_0
      @Randomcode_0  Před 9 měsíci

      You're welcome! I'm glad you found the video helpful.

  • @abraaorochapb6394
    @abraaorochapb6394 Před 4 měsíci

    It works ! Ty

  • @christianchapoco5472
    @christianchapoco5472 Před rokem

    finally, thanks man

  • @mrowox
    @mrowox Před rokem +1

    Best video. thumbs up

  • @codelib2337
    @codelib2337 Před rokem

    Thanks a lot!

  • @skccharan
    @skccharan Před rokem

    Thank you😊

  • @tolunaytoprakkaya2694
    @tolunaytoprakkaya2694 Před 6 měsíci

    Thank you so much

  • @orph4nsx
    @orph4nsx Před 2 měsíci

    is it running as production or dev? can i choose this option to make it running in production mode?

  • @Hamdiyazarss
    @Hamdiyazarss Před 5 měsíci

    Thanks

  • @olivierboisse1678
    @olivierboisse1678 Před 6 měsíci +1

    What is the need for ARG JAR_FILE ?

  • @friedec3622
    @friedec3622 Před 9 měsíci

    How to maven install using dockerfile?

  • @stonedcodingtom9097
    @stonedcodingtom9097 Před rokem

    Thx

  • @ffffff3525
    @ffffff3525 Před rokem +1

    брат, от души, ты спас мое положение у меня через неделю защита дипломки

  • @user-oc6kb5kr6l
    @user-oc6kb5kr6l Před 29 dny

    hi it didnt work for me for some reason cant connect them can you help me ?

  • @KlanBr1
    @KlanBr1 Před 11 měsíci

    and if my app have a database connection? how i introduce my database inside the container, because i can´t stablish the conection because that.(sorry for my english)

    • @Randomcode_0
      @Randomcode_0  Před 11 měsíci

      Your database should either have a public IP that you can connect to, or it needs to be accessible on the same network. In a more real world setup, your container would run on a cloud network where they could communicate, if a public endpoint is not desired.

  • @Go_with-Christ
    @Go_with-Christ Před rokem +4

    Good shit,why the 2nd line in dockerfile? You arent using it anywhere

    • @Randomcode_0
      @Randomcode_0  Před rokem

      You are right, in this case, it does not do anything. Normally we would use:
      ARG JAR_FILE=target/*.jar
      COPY ${JAR_FILE} app.jar
      To copy any jar file, but in this video, I wanted to clearly showcase which file we were actually moving, so it stayed, and I can hear I am more or less explaining what it does but it is clearly not used in the video.

  • @stoiandelev12345678
    @stoiandelev12345678 Před rokem

    Hi, when i open localhost:8000, nothing to show. But when i start application with Spring everythik work normal.Can help?

    • @Randomcode_0
      @Randomcode_0  Před rokem

      It is difficult to pinpoint the exact reason why it is not working, but my initial suggestions would be to check if the Docker container is connecting to the correct port that the Spring Boot application is exposing. If everything appears to be correct, you can consider accessing the container manually to investigate the issue further form inside the container.

  • @viktormykhasko9406
    @viktormykhasko9406 Před 10 měsíci +3

    IMHO, the better idea is using JRE such as eclipse-temurin:17-jre-alpine instead of full JDK, the second line is useless or should be fixed and , maybe, from a security prospective - execute app in container as non root.

  • @acethoughtless1596
    @acethoughtless1596 Před 8 měsíci

    Hello! First of all Congratulation for your video!!
    Well i have a problem , when i docker running this , it gives me an error messages about communication problem between the application and the MySQL database server.
    Well the main error seems to be a "Communications link failure" with a "Connection refused" exception. I can understand that docker cant access my database server for some reason!.
    I checked my database and everything is alright. Can you understand ,why this is happening ?

  • @the_rocker7786
    @the_rocker7786 Před rokem +1

    I think we can use either of ADD COPY

    • @Randomcode_0
      @Randomcode_0  Před rokem

      In this case, ADD and COPY would do more or less the same. The main difference is that ADD can retrieve remote URLs and extract compressed files, while COPY only copies local files from the Docker host.

  • @Hamdiyazarss
    @Hamdiyazarss Před 5 měsíci

    ADAMSIN

  • @ismailforeveryone6889

    PLEASE i need a use case of spring boot 3 with zipkin running inside containers

    • @Randomcode_0
      @Randomcode_0  Před rokem +1

      I have jsut been trying out zipkin, I now have a working system using docker-compose. Where I start a zipkin server in a contianer and a simple spring boot rest api in another container. Every call to the spring api is then called as a trace (but no saved in any database). I asssume this is more or less what you asked for? I will make vidoe showcaing and talking about this setup some time soon. Please let me know if this does not solve your use case.

    • @ismailforeveryone6889
      @ismailforeveryone6889 Před rokem +1

      @@Randomcode_0 thank you so much for your answer , the prob was latest versions of openzipkin have changed it's default port so the new endpoint to post zipkin trace is zipkin:
      tracing:
      endpoint:zipkin-server:9411/api/v2/spans , not zipkin-server:9411/ (which used with the oldest versions (this update made with spring boot 3

    • @Randomcode_0
      @Randomcode_0  Před rokem

      I am glad to hear you got it working!

    • @ismailforeveryone6889
      @ismailforeveryone6889 Před rokem

      @@Randomcode_0 thank you so much dear coder , that's very kind of you

  • @mohammedislam733
    @mohammedislam733 Před 9 měsíci

    But , when I have a hibernate crud app , it doesn't work , the error that the image can't connect to the jpa

    • @Randomcode_0
      @Randomcode_0  Před 9 měsíci

      A jpa issue indicates your service cannot connect to your database. If your database is in another docker container they need to be on the same docker network, and the db needs an open port where the service can connect.

    • @mohammedislam733
      @mohammedislam733 Před 9 měsíci

      @@Randomcode_0 can u please do a toturiel about it!

    • @Randomcode_0
      @Randomcode_0  Před 9 měsíci

      I think that's a great idea! Which database are you using? Would you prefer a pure Docker setup or docker-compose?

    • @mohammedislam733
      @mohammedislam733 Před 9 měsíci

      @@Randomcode_0 thanks bro for your response 🥰 , I'm new at both any toturiel will be good for me , I'm interested in your content, keep up the good work 😁

  • @damonmorgan963
    @damonmorgan963 Před 10 měsíci

    ERROR: failed to solve: dockerfile parse error on line 5: unknown instruction: ENTRYPOINT["java",

    • @damonmorgan963
      @damonmorgan963 Před 10 měsíci

      used CMD, removed brackets and quotes. It worked

    • @Randomcode_0
      @Randomcode_0  Před 10 měsíci

      Glad to hear you got it working.

  • @anirudhhosur3827
    @anirudhhosur3827 Před rokem

    It says [java, : notfound

    • @Randomcode_0
      @Randomcode_0  Před rokem

      If you are running FROM a docker environment containing java it should no be a problem. When we use: ENTRYPOINT["java","-jar","/app.jar"] it is translated and run inside the docker container as: java -jar /app.jar
      Otherwise could you specify when you get this problem?

  • @ezraorina100
    @ezraorina100 Před rokem

    Isn't openjdk deprecated?

    • @Randomcode_0
      @Randomcode_0  Před rokem +2

      You seem to be right, I did not know that. It seems like we should use: "eclipse-temurin:17" instead. Thanks for letting me know

  • @CheeseStickzZ
    @CheeseStickzZ Před 10 měsíci +3

    Useless. Your example is so superficial there is nothing to learn from it. At least show how to do it with spring boot maven plugin and build packs, or how to reduce the image size by running lite versions of your jre.

    • @abulka
      @abulka Před 9 měsíci +1

      Dealing with dependencies would be useful info to cover too - my springboot app relies on some dependencies in my local .m2 maven repository, so crashes inside the container because the dependencies aren’t copied in. Trying to figure out the best way to do this.

    • @CheeseStickzZ
      @CheeseStickzZ Před 9 měsíci

      @@abulka it's not your fault it's because the tutorial is trash. You need to use spring boot maven plugin with build packs. The command is build image. Look it up on Google

    • @Randomcode_0
      @Randomcode_0  Před 9 měsíci +2

      I recommend trying to build a fat JAR, which is a JAR file that includes dependencies bundled within it. While I can't guarantee it will solve your problem, it's a good starting point and the first thing I would test.