Thanks for sharing! I’ll try that out, too!
I totally feel your “pain” regarding fly.io’s “Deploy with Dockerfile” use case and the rare documentation. Still I am quite sold to the ease of use after wrapping your head around the docs. I have a rust backend application with postgres and this fully runs in fly.io. For DB migrations I especially like the deploy.release_command (https://fly.io/docs/reference/configuration/#run-one-off-commands-before-releasing-a-deployment).
Nice tip, thanks. I hadn’t seen that but I actually didn’t look into anything I didn’t need yet.
Also currently I’m wondering if the buildpacks are actually worth learning (and then relying on them to never break or not upgrade anything weird) if you know how to use a Dockerfile and deploy your app (say, written in Go) with a distroless container where you control 100% of everything. Maybe it’s down to convenience for people who have not used Docker for years…
For now, I stick with a Dockerfile, but idk what you mean by a „distroless container“? I build the image with gitlab-ci and directly push it to the fly container registry. I tried multiple times to build (remotely) using flys builders but it somehow always hung while setting up the docker remote context. Not sure about the buildpack thingy for now. Open for advice though ;)
Distroless would either use a FROM scratch final stage, or something like https://github.com/GoogleContainerTools/distroless
If you have a static binary (most often Go) without dependencies you can usually run it in a very stripped down container that doesn’t really contain an OS, like, say a Debian base image. https://github.com/GoogleContainerTools/distroless is one but I don’t think they invented this.