instruction: Create a Dockerfile for Node.js with production best practices
output: ```dockerfile
  from Docker Hub, each of which are
  Docker Official Images:node - provides a Node environment and is used as the base of your development efforts. This image is also used as the base for the final application image.mysql - provides a MySQL database to store the to-do list itemsphpmyadmin - provides phpMyAdmin, a web-based interface to the MySQL databasetraefik - provides Traefik, a modern HTTP reverse proxy and load balancer that routes requests to the appropriate container based on routing rulesExplore the full catalog of Docker Official Images, Docker Verified Publishers, and Docker Sponsored Open Source Software images to see more of what there is to run and build on.Try it outIn this hands-on guide, you'll learn how to sign in to Docker Hub and push images to Docker Hub repository.Sign in with your Docker accountTo push images to Docker Hub, you will need to sign in with a Docker account.Open the Docker Dashboard.Select Sign in at the top-right corner.If needed, create an account and then complete the sign-in flow.Once you're done, you should see the Sign in button turn into a profile picture.Create an image repositoryNow that you have an account, you can create an image repository. Just as a Git repository holds source code, an image repository stores container images.Go to Docker Hub.Select Create repository.On the Create repository page, enter the following information:Repository name - getting-started-todo-appShort description - feel free to enter a description if you'd likeVisibility - select Public to allow others to pull your customized to-do appSelect Create to create the repository.Build and push the imageNow that you have a repository, you are ready to build and push your image. An important note is that the image you are building extends the Node image, meaning you don't need to install or configure Node, yarn, etc. You can simply focus on what makes your application unique.What is an image/Dockerfile?Without going too deep yet, think of a container image as a single package that contains
  everything needed to run a process. In this case, it will contain a Node environment,
  the backend code, and the compiled React code.Any machine that runs a container using the image, will then be able to run the application as
  it was built without needing anything else pre-installed on the machine.A Dockerfile is a text-based script that provides the instruction set on how to build
  the image. For this quick start, the repository already contains the Dockerfile.
  CLI
  
  VS CodeTo get started, either clone or download the project as a ZIP file to your local machine.
  
  $ git clone https://github.com/docker/getting-started-todo-app
  And after the project is cloned, navigate into the new directory created by the clone:
  
  $ cd getting-started-todo-app
  Build the project by running the following command, swapping out DOCKER_USERNAME with your username.
  
  $ docker build -t <DOCKER_USERNAME>/getting-started-todo-app .
  For example, if your Docker username was mobydock, you would run the following:
  
  $ docker build -t mobydock/getting-started-todo-app .
  To verify the image exists locally, you can use the docker image ls command:
  
  $ docker image ls
  You will see output similar to the following:
  
  REPOSITORY TAG IMAGE ID CREATED SIZE
  mobydock/getting-started-todo-app latest 1543656c9290 2 minutes ago 1.12GB
  ...
  To push the image, use the docker push command. Be sure to replace DOCKER_USERNAME with your username:
  
  $ docker push <DOCKER_USERNAME>/getting-started-todo-app
  Depending on your upload speeds, this may take a moment to push.Open Visual Studio Code. Ensure you have the Docker extension for VS Code installed
  ```