ホームページ >データベース >mysql チュートリアル >コンテナ構成を変更せずにローカル MySQL データベースを Docker コンテナに接続するにはどうすればよいですか?

コンテナ構成を変更せずにローカル MySQL データベースを Docker コンテナに接続するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 16:36:02898ブラウズ

How to Connect a Local MySQL Database to a Docker Container Without Changing Container Configuration?

ローカル MySQL データベースを Docker コンテナに接続する

Docker 化されたセットアップを使用してアプリケーションを運用環境に移行する場合、コンテナベースの使用を避けたい場合があります。データベース。この記事では、コンテナのデータベース構成を変更せずに、ローカルでホストされている MySQL データベースを Docker コンテナ内で実行されているアプリケーションに接続する方法について説明します。

docker-compose.yml の変更

提供される docker-compose .yml ファイルには、コンテナ内の MySQL データベースを初期化する「app-db」という名前のサービスが含まれています。代わりにアプリケーションを外部 MySQL データベースに接続するには:

  1. docker-compose.yml ファイルから「app-db」サービスを削除します。
  2. に「environment」セクションを追加します。 「web-app」サービス。データベース接続の詳細が指定されます:
<code class="yaml">version: '3'
services:
  web-app:
    build:
      context: .
      dockerfile: web-app/Dockerfile
    ports:
      - 8080:8080
    environment:
      - MYSQL_HOST=host.docker.internal
      - MYSQL_PORT=3306
      - MYSQL_USER=username
      - MYSQL_PASSWORD=password
      - MYSQL_DATABASE=database_name</code>

ホスト解決の確保

Linux システムの場合、Docker コンテナはホストのネットワーク構成から分離されます。 。 Web アプリケーションが host.docker.internal アドレスを解決できるようにするには、コンテナーを「--add-host host.docker.internal:host-gateway」パラメーターで開始する必要があります:

<code class="sh">docker run --add-host host.docker.internal:host-gateway ...</code>

これパラメーターにより、コンテナーが host.docker.internal をホストの IP アドレスに解決できることが保証されます。

外部データベースへの接続

変更された docker-compose.yml とコンテナー構成を適切に配置すると、 Web アプリケーションは、環境変数で指定されているように、ローカルでホストされている MySQL データベースに接続できる必要があります。

以上がコンテナ構成を変更せずにローカル MySQL データベースを Docker コンテナに接続するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。