Defacto docker swarm lose race with k8s and one time almost die, and it has much less features than k8s (or even hashicorp nomad)...
But in other hand, personally I don't like k8s because of it complexity, and I really don't like when it used for running only few microservices on 3 hosts xD So my opinion: if you don't have resources to learn k8s and you don't run 100 apps with autoscaling - you can adopt docker swarm. Otherwise, you have to buy k8s from you cloud provider and learn it =\ In case of selfhosted k8s I recommend deckhouse.io or rancher.com
Even more important thing, than chose your docker orchestrator, - this is chose of distributed file system that you need for running stateful apps: I strongly recommend you buy efs or ceph from cloud provider, otherwise you should test next products yourself in your setup: https://vitobotta.com/2019/08/06/kubernetes-storage-openebs-...