Setting up a database of your choice (Postgres, MySQL, SQL Server) is nice and easy too.
What it does under the hood is also relatively easy to script or automate in other places. It builds a script artifact using:
dotnet ef migrations script --idempotent
Then it's just a matter of running that script on the right database.
Yes, I can use Docker and deploy to my own server, but I really want to focus on the product/service being built, not infrastructure. I’m using Heroku now because it is free (for the moment), and setup is relatively quick. I just added Redis and Celery last night. That was mostly a matter of clicking to add the add-on, and updating some Django settings.
If the project takes off, and makes some money, maybe I’ll move to a different provider. At this stage, however, the costs outweigh the benefits.
To be fair, you don't need that whole stack to run containers, and most of the work you had to do was to operate a particular choice of infrastructure services and tooling that are not necessary to run containers.
All you need to run containers in a single-node setup is Docker, and that's it.
Docker definitely gets the job done, but I would still have to worry about dealing with data backups, DNS, and deploying to the server. Heroku worries about all of that for me now.