instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from the operating
  system's point of view:
  
  $ sudo lsblk
  
  NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  xvda 202:0 0 8G 0 disk
  ââxvda1 202:1 0 8G 0 part /
  xvdf 202:80 0 100G 0 disk
  ââdocker-thinpool_tmeta 253:0 0 1020M 0 lvm
  â ââdocker-thinpool 253:2 0 95G 0 lvm
  ââdocker-thinpool_tdata 253:1 0 95G 0 lvm
   ââdocker-thinpool 253:2 0 95G 0 lvm
  Use the mount command to see the mount-point Docker is using:
  
  $ mount |grep devicemapper
  /dev/xvda1 on /var/lib/docker/devicemapper type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
  When you use devicemapper, Docker stores image and layer contents in the
  thinpool, and exposes them to containers by mounting them under
  subdirectories of /var/lib/docker/devicemapper/.Image and container layers on-diskThe /var/lib/docker/devicemapper/metadata/ directory contains metadata about
  the Devicemapper configuration itself and about each image and container layer
  that exist. The devicemapper storage driver uses snapshots, and this metadata
  include information about those snapshots. These files are in JSON format.The /var/lib/docker/devicemapper/mnt/ directory contains a mount point for each image
  and container layer that exists. Image layer mount points are empty, but a
  container's mount point shows the container's filesystem as it appears
  ```