instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from the node controller. Any DaemonSet Pods running on such nodes will not be evicted.node.kubernetes.io/disk-pressureNoScheduleDaemonSet Pods can be scheduled onto nodes with disk pressure issues.node.kubernetes.io/memory-pressureNoScheduleDaemonSet Pods can be scheduled onto nodes with memory pressure issues.node.kubernetes.io/pid-pressureNoScheduleDaemonSet Pods can be scheduled onto nodes with process pressure issues.node.kubernetes.io/unschedulableNoScheduleDaemonSet Pods can be scheduled onto nodes that are unschedulable.node.kubernetes.io/network-unavailableNoScheduleOnly added for DaemonSet Pods that request host networking, i.e., Pods having spec.hostNetwork: true. Such DaemonSet Pods can be scheduled onto nodes with unavailable network.You can add your own tolerations to the Pods of a DaemonSet as well, by
  defining these in the Pod template of the DaemonSet.Because the DaemonSet controller sets the
  node.kubernetes.io/unschedulable:NoSchedule toleration automatically,
  Kubernetes can run DaemonSet Pods on nodes that are marked as unschedulable.If you use a DaemonSet to provide an important node-level function, such as
  cluster networking, it is
  helpful that Kubernetes places DaemonSet Pods on nodes before they are ready.
  For example, without that special toleration, you could end up in a deadlock
  situation where the node is not marked as ready because the network plugin is
  not running there, and at the same time the network plugin is not running on
  that node because the node is not yet ready.Communicating with Daemon PodsSome possible patterns for communicating with Pods in a DaemonSet are:Push: Pods in the DaemonSet are configured to send updates to another service, such
  as a stats database. They do not have clients.NodeIP and Known Port: Pods in the DaemonSet can use a hostPort, so that the pods
  are reachable via the node IPs.
  Clients know the list of node IPs somehow, and know the port by convention.DNS: Create a headless service
  with the same pod selector, and then discover DaemonSets using the endpoints
  resource or retrieve multiple A records
  ```