 Let's say you're building your node app and once you're done, you want to publish it to the world. You log into your server, you build the app and... it doesn't work. Small differences in runtime environments can be extremely frustrating when trying to get your app running. Docker is one way to keep your runtime environment identical for development testing and production. Here I have an extremely important and complex node app using Express. To put everything in a Docker container, we need to create a new file called dockerfile and write a couple of lines. We are using the official node base image, set our working directory where our app's code will live, copy all source files of our app into the container image and run npm to install the dependencies. Now we declare our port and define the command that starts our app. We can now build our image using docker build and give it a label. Afterwards, we can use the image to start a new container using docker run. Don't forget to bind the port to your host. Now we can access the app just like we did before when the container is running. To get the app running on your server, you can either rebuild the image there, publish your image to the docker registry or save the image from your local machine to a file using docker save and publish it to your server. And there you have it. Our app is now running just like it was before, but this time we can be sure that the runtime environment will always be exactly the same every single time, no matter what machine it is on. Thanks for watching. See you next time. If you're wondering why I'm suddenly small and only partly covering the screen, that is because I need to make room for the big Chrome logo that you can click to subscribe. And also we need more space for our latest livestream over there.