flyctl deploy --image registry.fly.io/xyz:latest --remote-only --verbose
Update available 0.0.270 -> v0.0.272.
Run "flyctl version update" to upgrade.
Deploying xyz
==> Validating app configuration
--> Validating app configuration done
Searching for image 'registry.fly.io/xyz:latest' remotely...
image found: img_...
Image: registry.fly.io/xyz:latest
Image size: 24 MB
==> Creating release
Release v29 created
You can detach the terminal anytime without stopping the deployment
Monitoring Deployment
1 desired, 1 placed, 1 healthy, 0 unhealthy
v29 running - Deployment is running
...
flyctl deploy --image registry.fly.io/xyz:latest --remote-only --verbose
==> Verifying app config
--> Verified app config
==> Building image
Searching for image 'registry.fly.io/xyz:latest' remotely...
image found: img_...
==> Creating release
Error Services [0] Internal port can't be blank
app = "xyz"
kill_signal = "SIGTERM"
kill_timeout = 30
[build]
image = "registry.fly.io/xyz:latest"
[env]
RUST_LOG = "xyz=trace,debug"
[experimental]
allowed_public_ports = []
auto_rollback = true
[[services]]
internal_port = [8080]
http_checks = []
protocol = "tcp"
script_checks = []
[services.concurrency]
hard_limit = 300000
soft_limit = 290000
type = "connections"
[[services.ports]]
handlers = ["http"]
port = 80
[[services.ports]]
handlers = ["tls", "http"]
port = 443
maybe a requirement or some parser detail changed between those version?