setup using docker swarm, following covers everything: custom_containers/docs/docker-swarm.md at main · castlecraft/custom_containers · GitHub
Optionally if you wish to scale horizontally by adding more nodes later,
- use separate Database server or DBaaS: Setup MariaDB Server · frappe/frappe Wiki · GitHub
- use separate NFS server, or use (managed FS/ AWS EFS, etc): Setup NFS Server · frappe/frappe Wiki · GitHub and use nfs driver for volumes instead of local driver, Best way to deploy new versions of custom app in self hosted docker setup - #13 by revant_one