instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from the Go programming language.In Kubernetes APIs that use durations, the value is expressed as series of a non-negative
  integers combined with a time unit suffix. You can have more than one time quantity and
  the duration is the sum of those time quantities.
  The valid time units are "ns", "µs" (or "us"), "ms", "s", "m", and "h".For example: 5s represents a duration of five seconds, and 1m30s represents a duration
  of one minute and thirty seconds.Dynamic Resource AllocationТакож відомий як: DRAA Kubernetes feature that lets you request and share resources among Pods.
  These resources are often attached
  devices like hardware
  accelerators.[+]With DRA, device drivers and cluster admins define device classes that are
  available to claim in workloads. Kubernetes allocates matching devices to
  specific claims and places the corresponding Pods on nodes that can access the
  allocated devices.Dynamic Volume ProvisioningAllows users to request automatic creation of storage Volumes.[+]Dynamic provisioning eliminates the need for cluster administrators to pre-provision storage. Instead, it automatically provisions storage by user request. Dynamic volume provisioning is based on an API object, StorageClass, referring to a Volume Plugin that provisions a Volume and the set of parameters to pass to the Volume Plugin.EndpointsAn endpoint of a Service is one of the Pods (or external servers) that implements the Service.[+]For Services with selectors,
  the EndpointSlice controller will automatically create one or more EndpointSlices giving the
  IP addresses of the selected endpoint Pods.EndpointSlices can also be created manually to indicate the endpoints of
  Services that have no selector specified.EndpointSliceEndpointSlices track the IP addresses of Pods with matching selectors.[+]EndpointSlices can be configured manually for Services without selectors specified.Ephemeral ContainerA Container type that you can temporarily run inside a Pod.[+]If you want to investigate a Pod that's running with problems, you can add an ephemeral container to that Pod and carry out diagnostics. Ephemeral containers have no resource or scheduling guarantees, and you should not use them to run any part of the workload itself.Ephemeral containers are not supported by static pods.etcdConsistent and highly-available key value store used as Kubernetes' backing store for all cluster data.[+]If your Kubernetes cluster uses etcd as its backing store, make sure you have a
  back up plan
  for the data.You can find in-depth information about etcd in the official documentation.EventEvent is a Kubernetes object that describes state change/notable occurrences in the system.[+]Events have a limited retention time and triggers and messages may evolve with time.
  Event consumers should not rely on the timing of an event with a given reason reflecting a consistent underlying trigger,
  or the continued existence of events with that reason.Events should be treated as informative, best-effort, supplemental data.In Kubernetes, auditing generates a different kind of
  Event record (API group audit.k8s.io).EvictionEviction is the process of terminating one or more Pods on Nodes.[+]There are two kinds of eviction:Node-pressure evictionAPI-initiated evictionExtensionsExtensions are software components that extend and deeply integrate with Kubernetes to support new types of hardware.[+]Many cluster administrators use a hosted or distribution instance of Kubernetes. These clusters
  come with extensions pre-installed. As a result, most Kubernetes users will not need to install
  extensions and even fewer users will need to author new ones.Feature gateFeature gates are a set of keys (opaque string values) that you can use to control which
  Kubernetes features are enabled in your cluster.[+]You can turn these features on or off using the --feature-gates command line flag on each Kubernetes component.
  Each Kubernetes component lets you enable or disable a set of feature gates that are relevant to that component.
  The Kubernetes documentation lists all current
  feature gates and what they control.FinalizerFinalizers are namespaced keys that tell Kubernetes to wait until specific
  conditions are met before it fully deletes resources marked for deletion.
  Finalizers alert controllers
  to clean up resources the deleted object owned.[+]When you tell Kubernetes to delete an object that has finalizers specified for
  it, the Kubernetes API marks the object for deletion by populating .metadata.deletionTimestamp,
  and returns a 202 status code (HTTP "Accepted"). The target object remains in a terminating state while the
  control plane, or other components, take the actions defined by the finalizers.
  After these actions are complete, the controller removes the relevant finalizers
  ```