質問: ### 前提・実現したいこと docker-composeでMySQLコンテナを起動させたいです。 現在、"docker-compose up -d"を叩くと、「Bind for 0.0.0.0:3306 failed: port is already allocated」というエラーが出てきてしまい、起動できずにstatusがexit128となります。 ### 発生している問題・エラーメッセージ ``` ERROR: for **** Cannot start service ****: driver failed programming external connectivity on endpoint ********(~~): Bind for 0.0.0.0:3306 failed: port is already allocated ERROR: Encountered errors while bringing up the project. ``` ### 試したこと **"lsof -i:3306"を実行して該当するPIDを"kill -9 PID"で削除** →"docker-compose down"しても生き残っているPIDがあるのですが、そちらを削除するとdocker本体が停止してしまい、「ERROR: Couldn't connect to Docker daemon. You might need to start Docker for Mac.」が発生します。 **docker-compose.ymlファイル内で指定しているport番号を3306から3307に変更** →"docker-compose up -d"で全てのコンテナのstatusがupになりましたが、すぐに「MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.」が発生してしまい、statusがExit134になります。チーム開発しているものになるので、docker-compose.ymlファイルに手を加えたくない所です。 ### 補足情報(FW/ツールのバージョンなど) macOS docker v19.03.2 docker-compose v1.24.1
回答: 考えられそうな原因と対処法。 ### すでに3306ポートで起動しているコンテナがある `docker ps` で確認し、 `docker stop $CONTAINER_ID` もしくは `docker kill $CONTAINER_ID` で落とす。 ### ホストOS側でMySQLサーバが起動している `mysql.server stop` で停止。 上記でも解消しなければPCの再起動を試して下さい。 私もDocker for Macユーザですがそういった経験があります。