Not a better way, but a way that I use:
# create fly app if non existent
flyctl apps create --name <app-name> --org <org-name>
# also: --local-only instead of --remote-only
flyctl deploy --build-only --remote-only --dockerfile /path/to/dockerfile --push --image <img-label> -a <app-name>
# the image to use can be referenced with url:
# registry.fly.io/<app-name>:<img-label>
see also, its dual: Pulling the Container - #3 by eli