🚀
Fly.ioでのデプロイが突然失敗したよ
Fly.ioで運用しているアプリのデプロイが、ある日突然できなくなりました。
$ flyctl deploy --dockerfile flyio/Dockerfile --config flyio/fly.production.toml --remote-only
Waiting for depot builder...
Waiting for depot builder...
Waiting for depot builder...
Waiting for depot builder...
Waiting for depot builder...
Waiting for depot builder...
Waiting for depot builder...
Waiting for depot builder...
...
Error: failed to fetch an image or build from source: error building: unavailable: 504 Gateway Timeout
error reporting health: unauthenticated: Invalid token
上記のように、コマンドでデプロイを実行すると「Waiting for depot builder...」と表示され、長時間待たされた挙句、最終的に「504 Gateway Timeout」で失敗してしまいました。
(何もしてないのに壊れた状態)
イメージビルドのプロセスが変わった
fly.ioでは、DockerイメージのビルドをローカルのDockerを使うか、リモート上にDocker環境を用意してビルドすることができました。
--local-only
オプション(これまでのデフォルト)をつければローカルのDockerでビルドし、--remote-only
オプションをつければリモート上のDockerでビルドしていました。
しかし最近、--depot
オプションが導入され、Depot というサービスを利用してビルドするオプションが追加されました。
さらに、このDepotオプションがデフォルトになるというアナウンスがありました。 https://community.fly.io/t/depot-remote-builders-becoming-the-default/21756
自分の場合、--remote-only
オプションを明示してデプロイしていたため、影響はないと思っていましたが、どうやら違ったようです。
一旦--depot=falseにしてデプロイする
2024年9月24日現在、私の環境ではDepotを使ったデプロイがうまくいきません。
--depot=false
オプションを使用すると、今まで通りのリモート環境でビルドできます。
$ flyctl deploy --dockerfile flyio/Dockerfile --config flyio/fly.production.toml --remote-only --depot=false
これで、とりあえずデプロイできるようになりました。
Discussion