instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from the convenience of your development machine.Describing apps using Kubernetes YAMLAll containers in Kubernetes are scheduled as pods, which are groups of co-located containers that share some resources. Furthermore, in a realistic application you almost never create individual pods. Instead, most of your workloads are scheduled as deployments, which are scalable groups of pods maintained automatically by Kubernetes. Lastly, all Kubernetes objects can and should be described in manifests called Kubernetes YAML files. These YAML files describe all the components and configurations of your Kubernetes app, and can be used to create and destroy your app in any Kubernetes environment.You already wrote a basic Kubernetes YAML file in the Orchestration overview part of this tutorial. Now, you can write a slightly more sophisticated YAML file to run and manage your Todo app, the container getting-started image created in Part 2 of the Quickstart tutorial. Place the following in a file called bb.yaml:
  
  apiVersion: apps/v1
  kind: Deployment
  metadata:
   name: bb-demo
   namespace: default
  spec:
   replicas: 1
   selector:
   matchLabels:
   bb: web
   template:
   metadata:
   labels:
   bb: web
   spec:
   containers:
   - name: bb-site
   image: getting-started
   imagePullPolicy: Never
  ---
  apiVersion: v1
  kind: Service
  metadata:
   name: bb-entrypoint
   namespace: default
  spec:
   type: NodePort
   selector:
   bb: web
   ports:
   - port: 3000
   targetPort: 3000
   nodePort: 30001In this Kubernetes YAML file, there are two objects, separated by the ---:A Deployment, describing a scalable group of identical pods. In this case, you'll get just one replica, or copy of your pod, and that pod (which is described under the template: key) has just one container in it, based off of your getting-started image
  ```