[Docker]Dockerイメージ実行時にlocalhostにあるMySQLに接続する方法

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に接続できなくなってしまいます。

そこで、ローカルのPChostsファイルを編集します。

Macの場合は/etc/hostsに下記のものを追記します。

127.0.0.1 host.docker.internal

最後に

Dockerを使用するようにしても開発時はやはりローカル環境での動作確認などは必須となってくるので、今回のローカル環境のMySQLへの接続方法は忘れないようにしたいですね。

今回のホスト名の設定はローカルホストへ接続するものに対して使用できるので、MySQL以外のDBなどにも利用できると思います。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です