【fly.io】fly deploy時のエラー解決

fly.ioにてデプロイに成功していましたが、ある日突然失敗するようになりました。
ダッシュボードを確認すると、2023/6/8-9に障害が起きて復旧したようです。（作業日:2023/6/14）

https://status.flyio.net/

同じ境遇の方の役に立てればと思い、解決に至ったひとつの手順をシェアします。
あくまでもご自身の環境やエラーメッセージと照らし合わせて、ご判断いただけたらと思います。

経緯を追ってご説明します。まずデプロイ失敗のログ
```
$ fly deploy

Update available 0.1.20 -> 0.1.31.
Run "fly version upgrade" to upgrade.
==> Verifying app config
Validating /Users/.../fly.toml
Platform: machines
✓ Configuration is valid
--> Verified app config
==> Building image
WARN Remote builder did not start in time. Check remote builder logs with `flyctl logs -a fly-builder-weathered-fire-3099`
WARN Failed to start remote builder heartbeat: remote builder app unavailable
WARN Remote builder did not start in time. Check remote builder logs with `flyctl logs -a fly-builder-weathered-fire-3099`
Error: failed to fetch an image or build from source: error connecting to docker: remote builder app unavailable
```
が表示されました。
エラーメッセージをググりつつ、ログに表示されたアップデートも試みます。
```
$ flyctl logs -a fly-builder-weathered-fire-3099 #こちらは何故か何も表示されずでした
$ fly version upgrade
```
するとエラーメッセージが変わりました。
```
$ fly deploy

==> Verifying app config
Validating /Users/.../fly.toml
Platform: machines
✓ Configuration is valid
--> Verified app config
==> Building image
Waiting for remote builder fly-builder-weathered-fire-3099... 🌏WARN The running flyctl agent (v0.1.20) is older than the current flyctl (v0.1.34).
WARN The out-of-date agent will be shut down along with existing wireguard connections. The new agent will start automatically as needed.
WARN Remote builder did not start in time. Check remote builder logs with `flyctl logs -a fly-builder-weathered-fire-3099`
WARN Failed to start remote builder heartbeat: remote builder app unavailable
WARN Remote builder did not start in time. Check remote builder logs with `flyctl logs -a fly-builder-weathered-fire-3099`
Error: failed to fetch an image or build from source: error connecting to docker: remote builder app unavailable
```
ログに表示されているアップデートを試みます。
コマンドは下記参照。

https://github.com/superfly/flyctl#using-a-package-manager

```
$ flyctl logs -a fly-builder-weathered-fire-3099 #何も表示されない
$ brew install flyctl
$ brew upgrade flyctl
$ flyctl version
flyctl v0.1.34 #アップデート成功！
```
改めて、デプロイを試みます。
エラーメッセージが減りますが、まだ成功しません。アップデートでは解決しないようです。
```
$ fly deploy

==> Verifying app config
Validating /Users/.../fly.toml
Platform: machines
✓ Configuration is valid
--> Verified app config
==> Building image
WARN Remote builder did not start in time. Check remote builder logs with `flyctl logs -a fly-builder-weathered-fire-3099`
WARN Failed to start remote builder heartbeat: remote builder app unavailable
WARN Remote builder did not start in time. Check remote builder logs with `flyctl logs -a fly-builder-weathered-fire-3099`
Error: failed to fetch an image or build from source: error connecting to docker: remote builder app unavailable
```
```
Error: failed to fetch an image or build from source: error connecting to docker: remote builder app unavailable
```
上記のエラーは最初にググって、fly.io公式コミュニティの掲示板がヒットしましたが、英語なのであまり理解できず、、
またしっかり読み直すことにしました。

https://community.fly.io/t/error-connecting-to-docker-remote-builder-app-unavailable/5531

3名、私と同じエラーが出ているようです。
1人目の方はまず、
>I tried deleting the builder and creating a new one in the dashboard, but the result is the same.

と言っていますので、私もビルダーを削除して新規作成する方法を調べます。
また別の記事がヒットしました。

https://community.fly.io/t/how-do-i-delete-the-builder/8224

>If you run fly dashboard you will be taken to the dashboard. If you see an entry starting with fly-builder-, click on it, then on settings and from there you can delete the builder app.

>Alternately, you can run fly apps list and if you see an entry that starts with fly-builder- you can delete that app using fly apps destroy.

上を試みるも、UIが変わったのか見つけられません。
代わりに下を試すと、下記が表示されました。
```
$ fly apps list
NAME                           	OWNER   	STATUS   	PLATFORM	LATEST DEPLOY        
アプリ名                    	personal	suspended	machines	2023-06-08T19:38:50Z	
アプリ名-db                 	personal	deployed 	machines	                    	
fly-builder-weathered-fire-3099	personal	suspended	machines
```
1つ目の記事に戻りますが、
>can you try fly apps destroy fly-builder-still-morning-9002 and retry?

2つ目の記事にも、
>if you see an entry that starts with fly-builder- you can delete that app using fly apps destroy.

とあります。１記事目・1人目の方は、このコマンドを入力しても、また同じビルダーが作成されて困っているようです。
ですが、その後何らかの関係でビルダー再作成に成功して解決したようです。

削除コマンドなので、念の為ググって再確認します。

https://fly.io/docs/flyctl/apps-destroy/

```
$ fly apps destroy fly-builder-weathered-fire-3099
Destroying an app is not reversible.
? Destroy app fly-builder-weathered-fire-3099? Yes #yesかnoか聞かれるのでyを選択
Destroyed app fly-builder-weathered-fire-3099

```
もう一度デプロイを試みます。
```
$ fly deploy
...
...
...
  [1/2] Machine 123245... [app] update finished: success
  [2/2] Machine 67890... [app] update finished: success
Finished deploying

Visit your newly deployed app at https://アプリ名.fly.dev/
```
私はここで成功しました！

環境により必要な作業が変わりますが、少しでもお役に立てたら幸いです。