M1 macでDockerを動かす時に少しハマった話
はじめに
Macも買って開発環境も整えた。開発でもするかー
docker compose up
と。
ん?MySQLコンテナが立ち上がってねー
M1 MacでDockerのMySQLを立ち上げる方法
まずエラー内容は以下
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
解決方法としては簡単でplatformを追加してください。
db: ←コンテナの名前
image: mysql:8.0
platform: linux/x86_64 ←これを追加
追加ソフトウェアインストール
これで問題自体は解決ですが公式でもおすすめされているのでRosetta2も入れておきましょう。
softwareupdate --install-rosetta
ポートが既に使われている
これでMySQLのコンテナは動くようになりましたがGoのアプリケーションが動きません。具体的なエラーとしては以下
Ports are not available: listen tcp 0.0.0.0:5000: bind: address already in use
7000番ポートが既に使われているとのこと。ただ何も動かしていないはず。以前のコンテナがなんだかの原因で動いていることも考えてコンテナを再度ビルドしても変わらず。
とりあえずlsofコマンドを使ってポートが何に使用されているのか調べます。
lsof -i :5000
見たところcontrol ceと書かれていてmacのcontrol centerに疑いがかかります。googleで調べてみると。
macがair playの受信?にそのポートを使っている見たいです。5000番・7000番を使っているとのこと。
自分はサーバー開発は5000番次に7000番を使っていて重複したのが原因です。
とりあえずその機能を無効化します。↑のサイトを日本語で書くと手順としては
システム開発設定→共有→AirPlayレシーバーのチェックを外す
です。
これで無事動くようになりました!
まとめ
MySQLの動かし方やrosetta2に関してはすぐに見つかったのですが最後のポートについては少し時間がかかりました。
Dockerとは直接関係ないかもしれませんがlsofコマンドも知っておけば便利なので頭の片隅にでも置いておいてください!
この記事が気に入ったらサポートをしてみませんか?