Clean deploy to fly.io fails with DATABASE_URL missing error

Hey! Trying to deploy my fresh phoenix 1.6.15 app to fly.io by following the documentation. It should be as simple as doing a fly launch, but I end up getting the following error

ERROR! Config provider Config.Reader failed with:
         ** (RuntimeError) environment variable DATABASE_URL is missing.
         For example: ecto://USER:PASS@HOST/DATABASE

I thought that with phoenix > 1.6.3 the management of secrets like the DATABASE_URL would be completely managed by fly.io but that doesn’t seem to be the case, or did I miss a step?

Thanks!

Can you try another region? I had issues where the Postgres DB wasn’t being stood up before the deployment finished. I’m not at my computer but if you pasted clean logs (there is potentially some PII depending on how far back your logs go) I can point to the spot you should see it set up correctly.

Basically there should be output showing the Postgres credentials and the full url right after it starts provisioning the database. If you’re not seeing that in the logs then I suspect you’re running into what I did. I solved my problem by switching to the Miami region from Virginia. It’s possible this is a problem in only the one region or I had issues I could troubleshoot my way out of. The fact that it worked seamlessly in another region kinda suggests otherwise.

Hey @w0rd-driven, thanks for your reply! I think you’re right about the database issue as I’m not seeing the full url in the logs right after creation, all I see is

? Would you like to set up a Postgresql database now? Yes
? Select configuration: Production - Highly available, 2x shared CPUs, 4GB RAM, 40GB disk
Creating postgres cluster in organization personal
Creating app...

Unfortunately deleting the app and deploying again but swapping from London to Madrid didn’t fix it.

Hi! I also tried to deploy an app that does not need a database, but fly.io does not support that.
The solution was to set up postgres on fly.io for my application.

I could try creating the database separately and attaching it, but I’ve now reached the limit of 2 apps in the free tier, even though I’ve deleted them. Will wait to see if I get the room for 2 more!