Dockerfile Tutorial - Docker in Practice || Docker Tutorial 10
Vložit
- čas přidán 2. 05. 2024
- Dockerfile simply explained. This is a Dockerfile tutorial by example.
To deploy your application with Docker it must be packaged to it's own docker container. So, this means a docker image needs to be built from our JavaScript and Nodejs application and prepare it to be deployed on some environment. This will usually be done by an CD like Jenkins.
But in this video we will simulate what Jenkins does locally, building a docker image from our application locally.
▬▬▬▬▬▬ T I M E S T A M P S 🐳
0:00 - Intro
1:49 - What is a Dockerfile?
2:22 - How the Dockerfile commands map to the image environment
8:05 - Create the Dockerfile (Demo)
12:00 - Build an image out of the Dockerfile
15:02 - Start the Application to verify: 1) App starts successfully 2) App environment is configured correctly
19:34 - do improvement - copy only relevant files
"Docker in Practice":
Developing with Docker ► • Developing with Docker...
Docker Compose ► • Docker Compose Tutoria...
Dockerfile ► • Dockerfile Tutorial - ...
Private Repository ► • Private Repository exp...
Deploy your containerized Application ► • Deploying the containe...
You can check out my videos for the Pre-Requisites:
✅ Basic Docker Concepts: • What is a Docker Conta...
✅ Basic Commands: • 8 Basic Docker Command...
For any questions/issues/feedback, please leave me a comment and I will get back to you as soon as possible.
►► Full Docker and Kubernetes Tutorial Playlist: bit.ly/2YGeRp9
This video is the 10th of a complete series for beginners, where I explain the basic concepts and also show you demo's like deploying your containerized application. At the end of this tutorial you will fully understand Docker and Kubernetes.
💡 Only interested in Docker?
►► Complete Docker Tutorial Playlist: bit.ly/2ymJHbX
#docker #dockertutorials #devops #techworldwithnana
-------------------------------------------------------------------------------------
The complete step-by-step guide to Docker and Kubernetes will include the following content:
🐳 D O C K E R
- Container concept
- Why docker? (image vs. traditional DevOps)
- Install docker on different operating systems
- 8 basic commands you need to know
- Docker vs. Virtual Machine
- Docker in Practice: Overview of whole development process with Docker (development, continuous delivery, deployment)
- Develop an application with Docker
- Docker Compose
- Dockerfile
- Private Repository
- Deploying your containerized application
- Docker Volumes from theory to practice
✵ K U B E R N E T E S
- Main Kubernetes components (including Pod, Service, Ingress, Volumes, ConfigMap, Secrets, Deployment, StatefulSet)
- Kubernetes architecture for beginners (master, slave nodes & processes)
- Understand how does K8s REALLY work? Main Concepts of how to use K8s
- Minikube, Kubectl - set up the cluster and connect to it
- Kubectl main commands - Demo
- Configuration file (YAML) - syntax
- Kubernetes Namespaces
- Communication between the pods - basic networking concepts in Kubernetes
- K8s Deployment in practice - example application deployment (pod + service + Ingress + secret)
▬▬▬▬▬▬ Connect with me 👋 ▬▬▬▬▬▬
Join private Facebook group ► bit.ly/32UVSZP
Don't forget to subscribe ► bit.ly/3mO4jxT
DEV ► bit.ly/3h2fqiO
INSTAGRAM ► bit.ly/2F3LXYJ
TWITTER ► bit.ly/3i54PUB
LINKEDIN ► bit.ly/3hWOLVT
Legal Notice:
Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein. This video is not accredited, certified, affiliated with, nor endorsed by Docker, Inc.
Probably the dockerfile tutorial with the highest "information density" I know. Thank you for the sharp and precise explanations !
Omg, I've learnt so much from your video! You explained everything in details and very clearly. This helped me create my first Dockerfile, and it works perfectly
Good morning, I'm here to really commend and appreciate your good works. I do really enjoyed your series of videos on docker and Kubernetes. They are very inspiring, full of contents and simplified. Thanks
Nicely done video. Its clear and to the point. Thank you for your efforts and sharing your knowledge with the rest of us.
0:36- Review Diagram - Workflow
1:49 - What is a Dockerfile?
2:22 - How the Dockerfile commands map to the image environment
8:05 - Create the Dockerfile (Demo)
12:00 - Build an image out of the Dockerfile (Demo - simulating Jenkins)
15:02 - Start the Application to verify: 1) App starts successfully 2) App environment is configured correctly
19:34 - do improvement - copy only relevant files
👉🏼 For any questions/issues/feedback, please leave me a comment and I will get back to you as soon as possible.
👉🏼 Also please let me know what you want to learn about Docker & Kubernetes.
Also please don't forget to subscribe and give me a thumbs up if you liked my video 🤗
Very useful video....❤from india
where do i get server.js file i can see it on my local machine thanks
I actually took all my stuff and come resided here on your channel ,this becomes my new home , thank you very much , much love
Awesome :D Glad to hear you like my channel :)
Great explanations! Really enjoying this video series and actually getting my head around Docker - thanks Nana!
Thanks Tony, glad you like my explanations :)
just starting out with docker. this was so helpful. thank you very much!!
Your way of explaining it makes me fully understand each of the concepts, thanks!
That's nice to hear, thank you!
Thank you Nana! It's absolutely a great tutorial.
Nana, am loving the way you are making us go through the concepts so clearly in a short amount of time , I had looked other videos but never felt docker this easy
You are amazing. I love your series and channel. Keep up your good work thanks!
For me the best beginners-tutorial for Docker I could find on youtube. Many thanks and greetings from Switzerland.
That's very kind of you Raffael. I appreciate the support. Stay safe Switzerland. 🙂
What an excellent tutorial!!
Thanks Nana. This video eradicates some of my confusions.
Good Teacher in World, is you are.
I must say that, this is by far the best video/tutorial on Docker in CZcams. I always had doubt about Dockerfile & Docker-Compose files but, thanks to your excellent videos and explanations. It cleared all my doubts. I'm really grateful to you. Wish I found your channel a lot earlier. Thanks a lot, Nana! :) #Subscribed
First of all thanks again for this video, very clearly explained with detail in simple terms, it is helping me in very much in my work!
You're welcome! Happy to hear that they help you in your work :)
Excellent teaching. Thanks to Nana
You're the best!!!!
Thank you so much for this.
Your voice makes me crazy you have the most rare voice I have ever heard
Excellent video for this topic
Thanks a lot Nana, for simple and clear explanations.
Best informative video ever!
Hello Anna, concepts are very clear and understandable the way you have explained it with the example which makes us to understand very well. really appreciate your effort and hope to watch your more videos. thank you. and I wish all the best.
You are very much welcome Madhu. I hope this tutorial series has greatly helped you in one way or another. 🙂
That was a great explanation. Subscribed.
I watch your video and clear my doubt since I was not able to clear last three days ♥️♥️♥️♥️
Great explanation. Thank you 😊
Thank you so much for making this video. I love you Nana. ❤😂
You are a great instructor
Thanks for this video !!!
Great tutorial, Nana!
Thanks for this , its really helpful
That is really cool explanation, especially of the container having its own file system and how to connect into a container.
What was missing, was actually a demonstration of using your the app. I presume the host browser could see and connect to the running containerised application, but does this require the Web port mapping are also stated in the Docker file?
Thanks for this!
Thanks for your video and explained well
You 're really really good at explaining Docker clearly - will recommend to my data science students
Thanks, much appreciated.
Clear Explanation.
Your videos are just amazing
Thanks for the video, but I think there are two things missing:
1- Exposing the ports in the Dockerfile and attaching them from the run command.
2- Using a Dockerignore file instead of manually moving the files to another directory.
This video is so good I felt an urge to throw cash at the screen! How can we support the channel? Patreon? Merch? Paid courses?
😄 Happy to hear that! I have several paid courses, check out www.techworld-with-nana.com/
Or right below the video it says "THANKS", where you can support me. Thank you so much in advance! :)
I can throw in my btc wallet address for her 😂
Wooww mam 🙏🙏 awesome explaination..👌👌crisp n clear.. thanks a ton.
Good one, thanks for sharing this video
Great video, great instructions.
Thank you so much!
All Videos r outstanding and I don't know how to say thanks to u. 🤗🤗✌
Thanks a lot! Support me by subscribing, liking and sharing with others, who would be interested in such videos 🙂
Thank you it's very helpful
great job thanks
Nana, thanks for sharing.
you are the best ! thank you so much
Thanks a lot Yassin! :)
Thanks Nana. It is very useful to understand.
Thanks!
Thanks for this amazing video mam!
@TechWorld with Nana : Thanks for this , its really helpful. Most of the concepts are cleared with you Docker in Practice Course. Really Appreciated :)
You're welcome Nikhil. I'm grateful for the opportunity to help. 🙂
you are so good!
Great Explanation.. Thanks a lot for bringing such a valuable content.. 🤗
This is such a joy Ankit. Thank you. 🙂
Thank you for making these videos
You're welcome Tubejim. Please share with your friends and spread the knowledge. 🙂
Very well explained
you are the best...
Best explanation ever!!
Thank you 😊
Hi Nana, thank you for your tutorials! I hava question! Where are the environment variables used for? In the server.js these values are hardcoded right?
Thanks!
Perfect
thank you :)
great video, thx
Thank you
Thanks a lot for this video !!!
Docker official tutorials are very bad... But you explain them like it is the easiest thing in the world! Thanks Nana
Thanks
Hi Nana @TechWorld with Nana, Thanks for this amazing video of making a docker image. I am having one question. How we can run our image that depends on some other images as whole application like in this video, we have used MONGODB and MONGO-EPRESS UI images for storing the data in DB. In last 2 minutes you said we can run the docker image from docker compose. May i know we can do that..?? ...Thanks
tks
Basically the RUN command is like running a command during building the image, and when the image build is done, the command to be executed is written as CMD.
awesome videos maam...
Hi, thank you for the detail explanations, these tutorial are very good and to the point. I wanted to ask you if you something on secrets using docker-compose and also any BuildKit tutorials for docker? Thank you!
Thanks Jorge, regarding your question "secrets using docker-compose and also any BuildKit tutorials for docker" sure you can ask, what do you mean exactly, do you have any example?
@@TechWorldwithNana thank you, I think I figured it out, but your videos are very helpful and well explained. I am watching your kubernetes ones now. I appreciate your time and effort putting these together.
Hi Nina thanks for video but there is some more content I expected like downloading the artifact from repo whith login into that prvt artifact by encrypting the login details and building the image with that artifact
Informative and useful video. Two things 1. For windows ENV settings, do we use / or // or \ or \\ for PATHs 2. For java classpath, is it ["java","-cp"] or ["java","-classpath"] or ENV CLASSPATH? I would really appreciate it if you could go indepth into Dockerfiles for Java-Maven and Java-SpringBoot-Maven projects. Thanks again for your educational videos
It will be helpfull if it explained by using build command and by using jenkins to build container
Hello Nana, i have a question
let's suppose that i'm having a microservice app in which i'm using jenkins for continous integration for each microservice(each microservice has its own git repo in which i have specified the jenkinsfile, the src code and the dockerfile in order to build images for the genearted artifacts and pull them in dockerhub )How each image will talk to each other (i'm not going to build docker network manually i guess every thing should be done automatised )
Before building the image , I would v loved to take a look at your code if it had a .env file.
Thank you So much Nana, The concept was explained so nicely.
I Just have one query, Can we implement docker volume in docker file if yes, then how? (I tried to search for related video content but could not find any)
You did explain in this video how we can copy the content of a local directory in to the container while creating one which is good.
Hello you use docker bind concept
Hi,
How can I see a docker-file when the publisher hasn't put it on Docker Hub and there is no Git page? Also, you can use docker run --restart unless-stopped to ensure the container will restart after a reboot. Is it possible to do the same using docker compose?
Thanks,
Eduardo
U are awesome, god bless u NANA
Thank you Heena. Please don't forget to share with your friends. 🙂
Thanks for the clear explanations..!! After deploying my-app as container, the browser just shows empty page, tried to debug but no luck. Any idea, why??
However when my-app is run on host machine, I was able to see output in the browser and connects to mongodb container without any issues.
same i just encountered the same issue. Were you able to solve it?
I didn't follow this tutorial, but I think that she forgot to expose the port 3000 that is used by the Node server. I think that she had to write an EXPOSE command in the Dockerfile and add -d 3000:3000 to the docker run command.
@@queenofpain6483 the solution that worked for me was to change the line
let mongoUrlLocal = "mongodb://admin:password@localhost:27017";
to
let mongoUrlLocal = "mongodb://admin:password@mongodb:27017";
I will post at top. Several people are saying they are having the same problem. My environment is WSL2 on Windows so my fix may be specific to that environment or may be more widely applicable.
I have a question. In this docker file all we are doing is running node server.js, but what about the dependencies on mongo and mongo-express containers? Shouldn’t we include them as well as part of the Dockerfile?
It seems like the container isn't created until the deploy step. Would we ever want to create a container earlier, during development?
Hi! is it possible to change code without rebuilding image ? If we can, then pls tell how?
Hi Nana, what is the use of STOPSIGNAL in Dockerfile. Can you please explain with a example.
what about dockerfile workdir command.After you copy from host to container woud not be fine to set workdir to /home/app so that each further command as run will be executing in the WORKDIR container directory?Thank you
All tutorials are really awesome, pls consider using the white background in the terminal and in visual studio kind of tools, in a small screen it is really hard to see things on a black screen. Thanks.
Best teacher :) , I ve two qst:
1 . I become an error by building the image because of the encoding , the Dockerfile is in UTF16 encodoing how I could fix this to be in UTF8
2. Can I run/deploy windows based images in Linux host
Probably should cover ENTRYPOINT and LABELS also
Does running app with docker file will it run only app or both app and mongodb. Because in my case it is running app only and when I open browser the content of site at 3000 port is blank. And I am guessing it because of my mongodb is not running what say!
Kindly please answer my query
So far it's very interesting and your way of explanation is really good.
However when I ran the container in my local, it gives me the error "cannot find module express". I installed it now but it created a duplicate package-lock.json...How to fix this one?
ok, so delete node_modules folder. That's where all the downloaded modules like express get stored. then delete both package-lock.json files and do npm install again. and then build the image again with Dockerfile. Tell me if it worked!
Also you can check inside the container that express module is in node_modules folder. It means it was successfully installed and then copied into the image: czcams.com/video/WmcdMiyqfZs/video.html
please why we ignore the mongodb image when creating the docker file as its necessary for our application
If I don't set an SO in my Dockerfile, will docker take the SO from the host system?
As part of this Dockerfile why are we not doing RUN npm install?
If your docker instance is on a network that is isolated from the internet, can you download and then specify the node:alpine-13 image?
I'm probably too late to answer u but I'm sure u can download images from another computer and pull images from that computer to ur isolated instance using scp , rsync or sftp or whatever other cool tool of ur choice without issues.
Hi, I need to copy files that are generated in one container to another. How can I do that?
When i run this docker build command , it showed me this error failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount595932089/Dockerfile: no such file or directory
Thank you Nana!
weird, I cannot connect to the database. I start it up, and I see it is unable to connect to database. My URL is "mongodb://mongoadmin:password123@localhost:27017"; I can connect to it via mongo-express, it worked before I put the node.js code into a image. node server works, I can see it connected to a database, "node". I stop it, then start the container, and "/home/nodeapp/server.js" fails with the unable to connect to database. If I changed the URL fro localhost to mongodb (the name of my container) and joined the container to the mongo network, then it starts up
when you start the node app as a docker container, it must connect to MongoDB (another docker container) using the name (mongo), not the host:port. That's why before you build the image from node app, you must adjust the db url to mongodb://mongoadmin:password123@mongo. Of course the db url in practice will be set from outside, so you don't have to adjust it back and forth all the time. But this is how it works, just to understand the concept. Let me know if you have any further questions.
I your javascript application is not working. It showing blank screen. I debugging the dependency version did my best still application not working having bugs. It returns blank screen in response+ in logs it shows error at get(profile-pic/) route but not seen any error. Help me
please how do you create a file on docker