instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from each pod in the returned list.
  Writing a ReplicationController Manifest
  As with all other Kubernetes config, a ReplicationController needs apiVersion, kind, and metadata fields.
  When the control plane creates new Pods for a ReplicationController, the .metadata.name of the
  ReplicationController is part of the basis for naming those Pods. The name of a ReplicationController must be a valid
  DNS subdomain
  value, but this can produce unexpected results for the Pod hostnames. For best compatibility,
  the name should follow the more restrictive rules for a
  DNS label.
  For general information about working with configuration files, see object management.
  A ReplicationController also needs a .spec section.
  Pod Template
  The .spec.template is the only required field of the .spec.
  The .spec.template is a pod template. It has exactly the same schema as a Pod, except it is nested and does not have an apiVersion or kind.
  In addition to required fields for a Pod, a pod template in a ReplicationController must specify appropriate
  labels and an appropriate restart policy. For labels, make sure not to overlap with other controllers. See pod selector.
  Only a .spec.template.spec.restartPolicy equal to Always is allowed, which is the default if not specified.
  For local container restarts, ReplicationControllers delegate to an agent on the node,
  for example the Kubelet.
  Labels on the ReplicationController
  The ReplicationController can itself have labels (.metadata.labels). Typically, you
  would set these the same as the .spec.template.metadata.labels; if .metadata.labels is not specified
  then it defaults to .spec.template.metadata.labels. However, they are allowed to be
  different, and the .metadata.labels do not affect the behavior of the ReplicationController.
  Pod Selector
  The .spec.selector field is a label selector. A ReplicationController
  manages all the pods with labels that match the selector. It does not distinguish
  between pods that it created or deleted and pods that another person or process created or
  deleted. This allows the ReplicationController to be replaced without affecting the running pods.
  If specified, the .spec.template.metadata.labels must be equal to the .spec.selector, or it will
  be rejected by the API. If .spec.selector is unspecified, it will be defaulted to
  .spec.template.metadata.labels.
  Also you should not normally create any pods whose labels match this selector, either directly, with
  another ReplicationController, or with another controller such as Job. If you do so, the
  ReplicationController thinks that it created the other pods. Kubernetes does not stop you
  ```