Docker DesktopでMySQL5.7のコンテナが起動できない場合の対処法

## 環境
- MacBook Air 2020 Apple M1
- macOS: Monterey 12.7.6
- Docker Desktop v4.37.2
- Dockerイメージ: mysql:5.7

## 起こったこと
Docker Desktop4.37.2で `$ docker-compose up -d`をするも、なぜかMySQL 5.7のコンテナだけ起動できませんでした。
```bash
# コンテナを起動
$ docker-compose up -d
[+] Running 8/8
 ✔ Network example_default          Created                                                                                                                                      0.1s
 ✔ Volume "example_php-fpm-socket"  Created                                                                                                                                      0.0s
 ✔ Volume "example_db-store"        Created                                                                                                                                      0.0s
 ✔ Container example-web                                 Started                                                                                                                                      2.3s
 ✔ Container example-node                                Started                                                                                                                                      2.4s
 ✔ Container example-db                                  Started                                                                                                                                      2.4s
 ✔ Container example-app                                 Started                                                                                                                                      2.3s
 ✔ Container example-https                               Started

# コンテナが起動しているか確認
 $ docker-compose ps
NAME             IMAGE                               COMMAND                   SERVICE        CREATED         STATUS                   PORTS
example-app     example-app   "docker-php-entrypoi…"   app            8 seconds ago   Up 6 seconds             9000/tcp
example-https   steveltn/https-portal:1             "/init"                   https-portal   8 seconds ago   Up 5 seconds (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp
example-node    node:14.2-buster                    "docker-entrypoint.s…"   node           8 seconds ago   Up 6 seconds
example-web     example-web   "/docker-entrypoint.…"   web            8 seconds ago   Up 6 seconds             80/tcp
 ```
=> `$ docker-compose ps`の結果にdbコンテナ`example-db`だけが存在しません。。

 ## 調査
 `$ docker-compose logs db` でdbコンテナのログを確認。
 ```bash
 $ docker-compose logs db
example-db  | 2025-01-13 03:03:52+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
..省略..
# 「qemu」に注目
example-db  | qemu: uncaught target signal 11 (Segmentation fault) - core dumped
 ```

Segmentation faultでコケていることがわかり、qemuのエラーメッセージを頼りにこちらの記事に辿り着きました↓

https://ky-yk-d.hatenablog.com/entry/2024/02/02/112659

原因については以下の通り記載されていました。
> MySQL 5.7の公式Dockerイメージにはarm版が存在せず、amd版をApple Silicon上で動作させていたが、バージョンが上がったことでqemuでは動作しなくなった模様。

> qemuではなくRosettaを使うように設定を変更することで、動作するようになった。

=> Rosettaを使うように設定してあげればよさそう、ということがわかりました。

 ## 対処法
Rosettaを使うように設定する手順を記載します。
1： まずは↑の記事に書かれている通り、macOSのバージョンを`Ventura`以降にあげましょう（けっこー時間かかります・・）
>macOSがMonteleyではこの設定項目が表示されずRosettaが使えないようなので、その場合はVentura以降にOSバージョンを上げればよい

2：Docker Desktopの右上メニューから、歯車マーク（Settings）をクリック
3：左メニューから`General`を選択
4：「Virtual Machine Options」で `Apple Virtualization framework` を選択
5： `Use Rosetta for x86/amd64 emulation on Apple Silicon`がアクティブになるので、チェックを入れる
6： 右下の`Apply & Restart`をクリック
![スクリーンショット 2025-01-13 14.01.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071545/46161b94-4017-6e11-bc5e-148eb5e94d57.png)
7： コンテナを削除 → 再起動
```bash
# ボリュームごとコンテナを削除
$ docker-compose down -v
# コンテナを起動
$ docker-compose up -d
```

私の場合はこれで無事にdbコンテナが起動するようになりました！

## まとめ
dockerには詳しくないので、コンテナの再起動方法などは雰囲気で書いてしまってますが。。。
同様のエラーでお困りの方の参考になれば幸いです！