Like the log says, for a raw TCP service you’d need a dedicated IP. It seems like the app has a shared IP assigned too (announcement), which you can safely release.
# IPv6 is free, each IPv4 costs $2/mo
fly ips allocate-v6 -a appointment
fly ips allocate-v4 -a appointment
See if deploy then works after?