instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from scratchAlthough you're done with the workshop, there's still a lot more to learn about containers.Here are a few other areas to look at next.Container orchestrationRunning containers in production is tough. You don't want to log into a machine and simply run a
  docker run or docker compose up. Why not? Well, what happens if the containers die? How do you
  scale across several machines? Container orchestration solves this problem. Tools like Kubernetes,
  Swarm, Nomad, and ECS all help solve this problem, all in slightly different ways.The general idea is that you have managers who receive the expected state. This state might be
  "I want to run two instances of my web app and expose port 80." The managers then look at all of the
  machines in the cluster and delegate work to worker nodes. The managers watch for changes (such as
  a container quitting) and then work to make the actual state reflect the expected state.Cloud Native Computing Foundation projectsThe CNCF is a vendor-neutral home for various open-source projects, including Kubernetes, Prometheus,
  Envoy, Linkerd, NATS, and more. You can view the graduated and incubated projects here
  and the entire CNCF Landscape here. There are a lot of projects to help
  solve problems around monitoring, logging, security, image registries, messaging, and more.Getting started video workshopDocker recommends watching the video workshop
  ```