ローカル コンテナーで実行されているアプリケーションがローカル マシン上の PostgreSQL データベースに接続できるようにするには、次の手順を実行します。
-
PostgreSQL データベースがこのマシンにインストールされ、実行されていることを確認してください。psql コマンド ライン ツールまたはその他のビジュアル ツールを使用して、ローカル マシン上のデータベースを管理し、データベースに接続できます。
-
アプリケーションの構成ファイルで、ローカル マシン上の PostgreSQL データベースに接続するようにデータベース接続を構成します。通常、次の接続パラメータを指定する必要があります。
- ホスト名: 通常
localhost
は または で127.0.0.1
、ローカル マシンを示します。 - ポート番号: デフォルトでは、PostgreSQL はポート 5432 を使用します。
- データベース名: 接続するデータベースの名前。
- ユーザー名とパスワード: データベースへの接続に使用されるユーザー名とパスワード。
たとえば、アプリケーション構成ファイル内のデータベース接続構成は次のようになります。
spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase spring.datasource.username=myuser spring.datasource.password=mypassword
mydatabase
上記の構成内の部分を、接続する実際のデータベース名myuser
とmypassword
実際のデータベースのユーザー名とパスワードに必ず置き換えてください。 - ホスト名: 通常
-
ローカルで実行されている Docker コンテナーで、アプリケーションがローカル マシン上の PostgreSQL データベースにアクセスできることを確認します。デフォルトでは、Docker コンテナはローカル マシンとネットワークを共有し、
localhost
または を介して127.0.0.1
ローカル マシン上のサービスにアクセスできます。したがって、コンテナー内でもネイティブと同じデータベース接続構成を使用できます。コンテナでポート マッピングが使用されている場合 (たとえば、コンテナのポート 8080 がローカル マシンのポート 8080 にマップされている場合)、データベース接続構成のホスト名をローカル マシンの IP アドレスに変更する必要があります。
docker.for.mac.host.internal
または をホスト名として使用できますdocker.for.win.localhost
。これらは、サービスにネイティブにアクセスするために Mac および Windows 上の Docker Desktop によって提供される特別なホスト名です。たとえば、コンテナでポート マッピングが使用されており、コンテナの 8080 ポートがローカル マシンの 8080 ポートにマップされている場合、アプリケーション構成ファイル内のデータベース接続構成は次のようになります。
spring.datasource.url=jdbc:postgresql://docker.for.mac.host.internal:5432/mydatabase spring.datasource.username=myuser spring.datasource.password=mypassword
mydatabase
上記の構成内の部分を、接続する実際のデータベース名myuser
とmypassword
実際のデータベースのユーザー名とパスワードに必ず置き換えてください。
上記の手順により、ローカル コンテナ内のアプリケーションはローカル マシン上の PostgreSQL データベースに接続できるようになります。データベース接続が正しく構成されており、ローカル マシン上で PostgreSQL データベースが実行されていることを確認してください。