Docker
でイメージを実行したときにローカル環境のMySQL
に接続したかったんですが、普通に接続先のホスト名を「localhost
」としているだけじゃ接続できなかったので、対処法をメモしておきます。
動作確認した環境
- macOS Big Sur:11.5.2
- Docker: 20.10.13
- Docker desktop: 4.6.1
DockerイメージでlocalhostのMySQLに接続する方法
DB
接続する際にホスト名を指定すると思うんですが、単純にローカル環境だからと「localhost
」とすると接続できず、ローカルの環境でDocker
イメージを実行した動作確認などができません。
ホスト名に下記の値を設定するとローカル環境のMySQL
へ接続することができるようになります。
host.docker.internal
ただ、このように記述すると今度はローカル環境でDocker
を使用せず動作確認しようとすると今度はDocker
を使用していない場合にMySQL
に接続できなくなってしまいます。
そこで、ローカルのPC
のhosts
ファイルを編集します。
Mac
の場合は/etc/hosts
に下記のものを追記します。
127.0.0.1 host.docker.internal
最後に
Docker
を使用するようにしても開発時はやはりローカル環境での動作確認などは必須となってくるので、今回のローカル環境のMySQL
への接続方法は忘れないようにしたいですね。
今回のホスト名の設定はローカルホストへ接続するものに対して使用できるので、MySQL
以外のDB
などにも利用できると思います。
コメント