How to dockerize your Spring Boot API | Docker Tutorial

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 พ.ย. 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 TH-cam channel:
    / @randomcode_0
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 68

  • @cedescc7986
    @cedescc7986 หลายเดือนก่อน +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 หลายเดือนก่อน

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

  • @Elysor832
    @Elysor832 9 หลายเดือนก่อน +3

    Literally saved my life Thank you!

    • @Randomcode_0
      @Randomcode_0  9 หลายเดือนก่อน

      Great to hear!

  • @theparten
    @theparten ปีที่แล้ว +1

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

  • @andilesimelane4771
    @andilesimelane4771 10 หลายเดือนก่อน +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

    • @Randomcode_0
      @Randomcode_0  10 หลายเดือนก่อน

      Awesome, thank you!

  • @szymaniuk1983
    @szymaniuk1983 ปีที่แล้ว

    maaaan this is a good guide. Nice work man

  • @abastecedorademateriales
    @abastecedorademateriales 5 หลายเดือนก่อน

    awesome content !! thank you very much !!!

  • @ayushkumarsaksena7996
    @ayushkumarsaksena7996 5 หลายเดือนก่อน

    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 9 หลายเดือนก่อน +2

    Short and helpful, Thanks for the video!

    • @Randomcode_0
      @Randomcode_0  9 หลายเดือนก่อน

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

  • @olivierboisse1678
    @olivierboisse1678 6 หลายเดือนก่อน +1

    What is the need for ARG JAR_FILE ?

  • @orph4nsx
    @orph4nsx 2 หลายเดือนก่อน

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

  • @abraaorochapb6394
    @abraaorochapb6394 4 หลายเดือนก่อน

    It works ! Ty

  • @christianchapoco5472
    @christianchapoco5472 ปีที่แล้ว

    finally, thanks man

  • @friedec3622
    @friedec3622 9 หลายเดือนก่อน

    How to maven install using dockerfile?

  • @mrowox
    @mrowox ปีที่แล้ว +1

    Best video. thumbs up

  • @user-oc6kb5kr6l
    @user-oc6kb5kr6l 27 วันที่ผ่านมา

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

  • @codelib2337
    @codelib2337 ปีที่แล้ว

    Thanks a lot!

  • @tolunaytoprakkaya2694
    @tolunaytoprakkaya2694 6 หลายเดือนก่อน

    Thank you so much

    • @Randomcode_0
      @Randomcode_0  5 หลายเดือนก่อน

      You're most welcome

  • @KlanBr1
    @KlanBr1 11 หลายเดือนก่อน

    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  11 หลายเดือนก่อน

      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.

  • @skccharan
    @skccharan ปีที่แล้ว

    Thank you😊

  • @stoiandelev12345678
    @stoiandelev12345678 ปีที่แล้ว

    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  ปีที่แล้ว

      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.

  • @Go_with-Christ
    @Go_with-Christ ปีที่แล้ว +4

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

    • @Randomcode_0
      @Randomcode_0  ปีที่แล้ว

      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.

  • @acethoughtless1596
    @acethoughtless1596 8 หลายเดือนก่อน

    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 ?

    • @filipkajanovic1425
      @filipkajanovic1425 6 หลายเดือนก่อน

      Hello there, did you manage to solve the issue ?

  • @Hamdiyazarss
    @Hamdiyazarss 5 หลายเดือนก่อน

    Thanks

  • @ismailforeveryone6889
    @ismailforeveryone6889 ปีที่แล้ว

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

    • @Randomcode_0
      @Randomcode_0  ปีที่แล้ว +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 ปีที่แล้ว +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  ปีที่แล้ว

      I am glad to hear you got it working!

    • @ismailforeveryone6889
      @ismailforeveryone6889 ปีที่แล้ว

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

  • @mohammedislam733
    @mohammedislam733 9 หลายเดือนก่อน

    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  9 หลายเดือนก่อน

      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 9 หลายเดือนก่อน

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

    • @Randomcode_0
      @Randomcode_0  9 หลายเดือนก่อน

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

    • @mohammedislam733
      @mohammedislam733 9 หลายเดือนก่อน

      @@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 😁

  • @the_rocker7786
    @the_rocker7786 ปีที่แล้ว +1

    I think we can use either of ADD COPY

    • @Randomcode_0
      @Randomcode_0  ปีที่แล้ว

      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.

  • @stonedcodingtom9097
    @stonedcodingtom9097 ปีที่แล้ว

    Thx

  • @damonmorgan963
    @damonmorgan963 10 หลายเดือนก่อน

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

    • @damonmorgan963
      @damonmorgan963 10 หลายเดือนก่อน

      used CMD, removed brackets and quotes. It worked

    • @Randomcode_0
      @Randomcode_0  10 หลายเดือนก่อน

      Glad to hear you got it working.

  • @ffffff3525
    @ffffff3525 ปีที่แล้ว +1

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

  • @viktormykhasko9406
    @viktormykhasko9406 10 หลายเดือนก่อน +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.

  • @ezraorina100
    @ezraorina100 ปีที่แล้ว

    Isn't openjdk deprecated?

    • @Randomcode_0
      @Randomcode_0  ปีที่แล้ว +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

  • @anirudhhosur3827
    @anirudhhosur3827 ปีที่แล้ว

    It says [java, : notfound

    • @Randomcode_0
      @Randomcode_0  ปีที่แล้ว

      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?

  • @Hamdiyazarss
    @Hamdiyazarss 5 หลายเดือนก่อน

    ADAMSIN

  • @CheeseStickzZ
    @CheeseStickzZ 10 หลายเดือนก่อน +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 9 หลายเดือนก่อน +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 9 หลายเดือนก่อน

      @@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  9 หลายเดือนก่อน +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.