These questions aren't really specific to Kotlin and may be better suited for other help forums, but I'll offer what I can.
First of all, regardless of how you deploy/host the ktor server, you'll also need to find a way to host your database. Plenty of options like AWS RDS, Supabase, Neon, etc.
Regarding Docker, it sounds like you need to read up more on what Docker is and why it's useful, but my summary is: it's a standardized way of packaging applications, regardless of whether they're built with JVM, python, Node.js, whatever. If a cloud provider can run docker containers, then users are able to run anything they want as long as they package it in docker first. Now for you, since AWS Lambda does provide
Java runtimes, you probably don't need docker unless your app requires other special things installed outside the JRE.
Speaking of AWS Lambda, I don't think the way it receives requests is actually compatible with running an HTTP server like ktor. From what I see in their docs, the request is delivered to a specific
function in your code. So you'd end up stripping out the ktor layer and keep just the internal logic. If you do go that route,
here's their tutorial. The key is that you compile to a jar, upload the jar, and say what function inside the jar is set up to receive the requests. I think GCP's
Cloud Run Services would be able to run an HTTP server as-is though. GCP's postres offering is under the umbrella they call
Cloud SQL
Here's a separate
AWS tutorial for your overall scenario, but it may not be free.