Now to give you an example,
I have a brand new empty project here,
it got no application inside of it.
And now let's say we wanna create
a node application in there.
Up to this point in the course,
I always gave you a finished node application,
a starting application,
I always gave you a file attachment.
Now the problem with that just is
that we can create such an application
without node being installed on our system.
But it would be quite cumbersome.
Because we need this package .JSON file
with some configuration about the node app.
Most importantly,
with a list of dependencies this app needs.
And yes, we could use some blueprints here
and copy and paste that into any new project we have.
And we can type it all out by hand here,
this would be possible.
But typically, you create new node projects
by running npm init, in your project folder,
and npm init will then walk through a couple of questions.
And at the end, create a package JSON file
with the answers to the questions posed
and some defaults filled in.
Now, the problem about that just is
that NPM is not a command,
which is available on your machine just like this,
it's only available if you got node JSON installed.
And for that,
you need to visit nodejs.org downloaded.
Now the problem with that, in turn,
is that the entire idea behind Docker is
that we don't need to install tools globally
on our host machine.
Instead, we want to use containers,
which include the environments our application needs.
Nonetheless, to set up an application in the first place,
we basically need to install Node JS
in order to run this NPM command.
Unless we want to type this package .JSON file by hand.
And you might think that this is a node specific problem.
But it's not.
If you start working with PHP
and maybe frameworks like Laravel,
you will need even more complex setup on your system.
And you will need to install even more tools
just to set up such a Laravel application, for example.
So it's not node specific.
A lot of projects and a lot of programming languages
need some extra tools to be installed on your system
on your host machine in order to create the projects.
And yes, you can put the project
into a container thereafter.
But the initial creation
still needs these tools to be installed on your system.
And that's exactly where utility containers can help us
so therefore, let's no dig into utility containers.
And let's in general, explore what we can do with Docker
beyond running some application.