instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from the commandline by using docker feedback.Improved the text and position of the startup options in the General settings tab.Redesigned the dashboard's header bar, added links to other Docker resources, improved display of account information.Fixed a bug where enabling the containerd image store and Wasm simultaneously would not enable Wasm.containerd integration:Fixed docker push/pull authentication not being sent to non-DockerHub registries in cases where ServerAddress is not provided.Fixed docker history reporting wrong IDs and tags.Fixed docker tag not preserving internal metadata.Fixed docker commit when the daemon configured with --userns-remap.Fixed docker image list to show real image creation date.Added support for -a flag to docker pull (pull all remote repository tags).Added support for --group-add flag to docker run (append extra groups).Adjusted some errors reported by docker push/pull.Docker Init:Improved cross-compilation in Dockerfiles for Golang and Rust.Improved caching in Dockerfile for ASP.NET Core.Docker Desktop now gives more detailed information about pending updates in the dashboard footer.Fixed a bug in Enhanced Container Isolation mode where docker run --init was failing.Fixed a bug where a notification prompting the user to download a new version of Docker Desktop remained visible after the user started downloading the new version.Added a notification that indicates when Docker Desktop is installing a new version.Fixed a bug where the cursor changed to a pointer when the user hovered over a notification that has no call to action.For MacFixed an issue where Rosetta would not work with PHP. Fixes docker/for-mac#6773 and docker/for-mac#7037.Fixed several issues related to Rosetta not working. Fixed [docker/for-mac#6973, [docker/for-mac#7009, [docker/for-mac#7068 and [docker/for-mac#7075Improved the performance of NodeJS under Rosetta.Fixed the Unable to open /proc/self/exe Rosetta errors.Fixed a bug were the setting Start Docker Desktop when you sign in would not work. Fixes docker/for-mac#7052.You can now enable the use of Kernel networking path for UDP through the UI. Fixes docker/for-mac#7008.Fixed a regression where the uninstall CLI tool was missing.Addressed an issue which caused Docker Desktop to become unresponsive when analytics were disabled with Settings Management.For WindowsAdded support for WSL mirrored mode networking (requires WSL v2.0.4 and up).Added missing signatures on DLL and VBS files.Known issuesFor WindowsDocker CLIÂ doesnât work when using WSL 2 integration on an older Linux distribution (for example, Ubuntu 20.04) which uses a glibc version older than 2.32. This will be fixed in future releases. SeeÂ docker/for-win#13824.4.25.22023-11-21Bug fixes and enhancementsFor all platformsFixed a bug where a blank UI would appear after submitting a response in the Welcome Survey.For WindowsFixed a bug where Docker Desktop on WSL 2 would shut down dockerd unexpectedly when idle. Fixes docker/for-win#137894.25.12023-11-13Bug fixes and enhancementsFor all platformsFixed a regression in 4.25 where Docker would not start if the swap file was corrupt. Corrupt swap files will be re-created on next boot.Fixed a bug when swap is disabled. Fixes docker/for-mac#7045, docker/for-mac#7044 and docker/for-win#13779.The sysctl vm.max_map_count is now set to 262144. See docker/for-mac#7047For WindowsFixed an issue where Switch to Windows Containers would not appear on the tray menu for some users. See docker/for-win#13761.Fixed a bug where the WSL integration would not work for users using a shell other than sh. See docker/for-win#13764.Re-added DockerCli.exe.4.25.02023-10-26NewRosetta is now Generally Available for all users on macOS 13 or later. It provides faster emulation of Intel-based images on Apple Silicon. To use Rosetta, see
  Settings. Rosetta is enabled by default on macOS 14.1 and later.Docker Desktop now detects if a WSL version is out of date. If an out dated version of WSL is detected, you can allow Docker Desktop to automatically update the installation or you can manually update WSL outside of Docker Desktop.New installations of Docker Desktop for Windows now require a Windows version of 19044 or later.Administrators now have the ability to control Docker Scout image analysis in
  Settings Management.UpgradesCompose v2.23.0Docker Scout CLI v1.0.9.Kubernetes v1.28.2cri-dockerd v0.3.4CNI plugins v1.3.0cri-tools v1.28.0Bug fixes and enhancementsFor all platformsFixed a spacing problem in the Accept License pop-up.Fixed a bug where the Notifications drawer changed size when navigating between Notifications list and Notification details view.containerd integration:docker push now supports Layer already exists and Mounted
  ```
  
  ## Production Considerations
  
  ### Security Best Practices
  
  1. **Use non-root user**
  ```dockerfile
  # Create non-root user
  RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
  USER nodejs
  ```
  
  2. **Scan for vulnerabilities**
  ```bash
  # Scan container image
  docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image <image_name>
  ```
  
  3. **Apply security policies**
  ```yaml
  apiVersion: v1
  kind: Pod
  spec:
    securityContext:
      runAsNonRoot: true
      runAsUser: 1001
      fsGroup: 1001
    containers:
    - name: app
      securityContext:
        allowPrivilegeEscalation: false
        readOnlyRootFilesystem: true
        capabilities:
          drop:
          - ALL
  ```
  
  ### Performance Optimization
  
  1. **Resource management**
  ```yaml
  resources:
    requests:
      memory: "128Mi"
      cpu: "100m"
    limits:
      memory: "256Mi"
      cpu: "200m"
  ```
  
  2. **Horizontal Pod Autoscaling**
  ```yaml
  apiVersion: autoscaling/v2
  kind: HorizontalPodAutoscaler
  metadata:
    name: app-hpa
  spec:
    scaleTargetRef:
      apiVersion: apps/v1
      kind: Deployment
      name: my-app
    minReplicas: 3
    maxReplicas: 10
    metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70
  ```
  
  ### Backup and Disaster Recovery
  
  1. **Data backup strategy**
  ```bash
  # Automated backup script
  kubectl create job --from=cronjob/backup-job backup-manual-$(date +%Y%m%d-%H%M%S)
  ```
  
  2. **Multi-region deployment**
  ```yaml
  # Anti-affinity rules
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: app
              operator: In
              values:
              - my-app
          topologyKey: kubernetes.io/zone
  ```