Well, I feel kind of dumb. I had completely missed what fly.io appended ages ago to the dockerfile:
# Appended by flyctl
ENV ECTO_IPV6 true
ENV ERL_AFLAGS "-proto_dist inet6_tcp"
And Docker Desktop doesn’t support IPv6.
Removing those lines, I can build and run the docker container just fine.
$ docker run --rm -e PHX_HOST="0.0.0.0" -e PORT="4000" -e DATABASE_URL="postgres://{localpostgres}:5432/phoenix_app_dev" -e SECRET_KEY_BASE="very_long_test_secret_key" -it ajmc-reader
14:06:04.145 [info] Running TextServerWeb.Endpoint with cowboy 2.10.0 at :::4000 (http)
14:06:04.145 [info] Access TextServerWeb.Endpoint at http://0.0.0.0:4000
I’ll leave this here in case anyone else runs across this kind of issue in the future. Thank you, Elixir Forms and all, for being my rubber duck.