見出し画像

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コマンドも知っておけば便利なので頭の片隅にでも置いておいてください!

この記事が気に入ったらサポートをしてみませんか?