instruction: Create a comprehensive Dockerfile for networking applications with best practices
output: ```dockerfile
  from a
  manager.
  
  $ docker node ls
  
  ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
  d68ace5iraw6whp7llvgjpu48 * ip-172-31-34-146 Ready Active Leader
  nvp5rwavvb8lhdggo8fcf7plg ip-172-31-35-151 Ready Active
  ouvx2l7qfcxisoyms8mtkgahw ip-172-31-36-89 Ready Active
  You can also use the --filter flag to filter by role:
  
  $ docker node ls --filter role=manager
  
  ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
  d68ace5iraw6whp7llvgjpu48 * ip-172-31-34-146 Ready Active Leader
  
  $ docker node ls --filter role=worker
  
  ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
  nvp5rwavvb8lhdggo8fcf7plg ip-172-31-35-151 Ready Active
  ouvx2l7qfcxisoyms8mtkgahw ip-172-31-36-89 Ready Active
  List the Docker networks on manager, worker-1, and worker-2 and notice
  that each of them now has an overlay network called ingress and a bridge
  network called docker_gwbridge. Only the listing for manager is shown
  here:
  
  $ docker network ls
  
  NETWORK ID NAME DRIVER SCOPE
  495c570066be bridge bridge local
  961c6cae9945 docker_gwbridge bridge local
  ff35ceda3643 host host local
  trtnl4tqnc3n ingress overlay swarm
  c8357deec9cb none  local
  The docker_gwbridge connects the ingress network to the Docker host's
  network interface so that traffic can flow to and
  ```