Render will automatically handle port detection, so that doesn’t need to be added to the render.yaml file.
The volumes can be handled by defining a Render disk for your service. You just define the directory that you want persisted across deploys. In this case it seems to be /data
The value you currently have for command should be your service’s start command.
Web services are accessible over the internet while private services can only be accessed by other Render services. If you plan to us this to create a public facing web site or API, I would suggest using a web service.