You can use whatever tool you want to produce the OCI image, but it needs to be in registry.fly.io or a publicly assessable registry to deploy. Loading a tarball into docker then pushing will work, or you can use a tool that can push the tarball straight to a registry.
Just be aware that you need to use oci-archive
tarballs to maintain layers for caching. Otherwise pushes and VM launches will be noticeably slower anytime the image changes.