instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from an app")' > app.js
  To run this Node program, you can use the following command and see the message printed on the screen:
  
  $ node app.js
  In another terminal, run the following command to save this containerâs changes as a new image:
  
  $ docker container commit -c "CMD node app.js" -m "Add app" app-container sample-app
  This command not only creates a new image named sample-app, but also adds additional configuration to the image to set the default command when starting a container. In this case, you are setting it to automatically run node app.js.In a terminal outside of the container, run the following command to view the updated layers:
  
  $ docker image history sample-app
  Youâll then see output that looks like the following. Note the top layer comment has âAdd appâ and the next layer has âAdd nodeâ:
  
  IMAGE CREATED CREATED BY SIZE COMMENT
  c1502e2ec875 About a minute ago /bin/bash 33B Add app
  5310da79c50a 4 minutes ago /bin/bash 126MB Add node
  2b7cc08dcdbb 5 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
  <missing> 5 weeks ago /bin/sh -c #(nop) ADD file:07cdbabf782942af0â¦ 69.2MB
  <missing> 5 weeks ago /bin/sh -c #(nop) LABEL org.opencontainers.â¦ 0B
  <missing> 5 weeks ago /bin/sh -c #(nop) LABEL org.opencontainers.â¦ 0B
  <missing> 5 weeks ago /bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH 0B
  <missing> 5 weeks ago /bin/sh -c #(nop) ARG RELEASE 0B
  Finally, start a new container using the brand new image. Since you specified the default command, you can use the following command:
  
  $ docker run sample-app
  You should see your greeting appear in the terminal, coming
  ```