Unable to deploy with a public Docker image

Here’s the error:

$ flyctl deploy --remote-only -i bugjug/bugjug:dev
==> Verifying app config
--> Verified app config
==> Building image
Searching for image 'bugjug/bugjug:dev' remotely...
Error failed to fetch an image or build from source: Could not find image "docker.io/bugjug/bugjug:dev"

I also tried pushing the image to registry.fly.io. Pushing succeeds, but again deploy fails:

$ podman push <localtag> registry.fly.io/bugjug-dev:dev
<successful output>

$ flyctl deploy --remote-only -i registry.fly.io/bugjug-dev:dev
==> Verifying app config
--> Verified app config
==> Building image
Searching for image 'registry.fly.io/bugjug-dev:dev' remotely...
Error failed to fetch an image or build from source: Could not find image "registry.fly.io/bugjug-dev:dev"

I thought maybe there was something wrong with the image itself, and the error was just misleading, but when I switched to letting flyctl build the image remotely it worked fine. I also tried pushing a different random image (specifically, postgres:latest) to registry.fly.io/bugjug-dev:dev, and deploying that remote image also worked fine.
So, I don’t know what’s going wrong and the error output isn’t detailed enough to debug it on my end. The failing query seems to be here: flyctl/resource_apps.go at 00b8e213b3dae0bd9a9ee7686a1b2c8e1114422c · superfly/flyctl · GitHub, which suggests to me that the problem is server side rather than anything locally misconfigured.

This is a strange one. It looks like your image is missing a manifest, which is what’s causing the error on our end. We use the manifest to figure out things like the compressed size of the image and the architecture.

I’m able to pull your image with docker pull but docker manifest inspect bugjug/bugjug fails for latest and `dev’ tags. How are you pushing the image to Dockerhub?

TIL that docker manifests are a thing. :slight_smile: I guess the problem here is likely due to me using podman, which tries to be a drop-in replacement for the docker CLI, but in practice often differs significantly in the details.

There’s some useful-looking info in Working with container image manifest lists about manifests, but I haven’t managed to understand it yet enough to figure out what commands to run here.

Can you try with docker build and docker push to see how it goes? I suppose we should be able to support images without a manifest, but they are useful to have.

1 Like