instruction: Create a Dockerfile for Nginx with production best practices
output: ```dockerfile
  From Message
   ---- ------ ---- ---- -------
   Normal ScalingReplicaSet 2m deployment-controller Scaled up replica set nginx-deployment-2035384211 to 3
   Normal ScalingReplicaSet 24s deployment-controller Scaled up replica set nginx-deployment-1564180365 to 1
   Normal ScalingReplicaSet 22s deployment-controller Scaled down replica set nginx-deployment-2035384211 to 2
   Normal ScalingReplicaSet 22s deployment-controller Scaled up replica set nginx-deployment-1564180365 to 2
   Normal ScalingReplicaSet 19s deployment-controller Scaled down replica set nginx-deployment-2035384211 to 1
   Normal ScalingReplicaSet 19s deployment-controller Scaled up replica set nginx-deployment-1564180365 to 3
   Normal ScalingReplicaSet 14s deployment-controller Scaled down replica set nginx-deployment-2035384211 to 0
  Here you see that when you first created the Deployment, it created a ReplicaSet (nginx-deployment-2035384211)
  and scaled it up to 3 replicas directly. When you updated the Deployment, it created a new ReplicaSet
  (nginx-deployment-1564180365) and scaled it up to 1 and waited for it to come up. Then it scaled down the old ReplicaSet
  to 2 and scaled up the new ReplicaSet to 2 so that at least 3 Pods were available and at most 4 Pods were created at all times.
  It then continued scaling up and down the new and the old ReplicaSet, with the same rolling update strategy.
  Finally, you'll have 3 available replicas in the new ReplicaSet, and the old ReplicaSet is scaled down to 0.Note:Kubernetes doesn't count terminating Pods when calculating the number of availableReplicas, which must be between
  replicas - maxUnavailable and replicas + maxSurge. As a result, you might notice that there are more Pods than
  expected during a rollout, and that the total resources consumed by the Deployment is more than replicas + maxSurge
  until the terminationGracePeriodSeconds of the terminating Pods expires.Rollover (aka multiple updates in-flight)Each time a new Deployment is observed by the Deployment controller, a ReplicaSet is created to bring up
  the desired Pods. If the Deployment is updated, the existing ReplicaSet that controls Pods whose labels
  match .spec.selector but whose template does not match .spec.template are scaled down. Eventually, the new
  ReplicaSet is scaled to .spec.replicas and all old ReplicaSets is scaled to 0.If you update a Deployment while an existing rollout is in progress, the Deployment creates a new ReplicaSet
  as per the update and start scaling that up, and rolls over the ReplicaSet that it was scaling up previously
  -- it will add it to its list of old ReplicaSets and start scaling it down.For example, suppose you create a Deployment to create 5 replicas of nginx:1.14.2,
  but then update the Deployment to create 5 replicas of nginx:1.16.1, when only 3
  replicas of nginx:1.14.2 had been created. In that case, the Deployment immediately starts
  killing the 3 nginx:1.14.2 Pods that it had created, and starts creating
  nginx:1.16.1 Pods. It does not wait for the 5 replicas of nginx:1.14.2 to be created
  before changing course.Label selector updatesIt is generally discouraged to make label selector updates and it is suggested to plan your selectors up front.
  In any case, if you need to perform a label selector update, exercise great caution and make sure you have grasped
  all of the implications.Note:In API version apps/v1, a Deployment's label selector is immutable after it gets created.Selector additions require the Pod template labels in the Deployment spec to be updated with the new label too,
  otherwise a validation error is returned. This change is a non-overlapping one, meaning that the new selector does
  not select ReplicaSets and Pods created with the old selector, resulting in orphaning all old ReplicaSets and
  creating a new ReplicaSet.Selector updates changes the existing value in a selector key -- result in the same behavior as additions.Selector removals removes an existing key
  ```