アプリケーション サービスとデータベース サービスにdocker-compose.ymlファイルを使用しています。
version: '2'
services:
app-service:
image: app-image
container_name: app-container
ports:
- "5000:5000"
networks:
- my-network
links:
- db-service
db-service:
image: db-image
container_name: db-container
ports:
- "5432:5432"
networks:
- my-network
networks:
my-network:
driver: bridge
アプリケーション サービスは、 db-serviceをホストとして接続文字列を使用してデータベースに接続します。
"User ID=postgres;Password=password;Host=db-service;Port=5432;Database=my-table;Pooling=true;"
実行中のアプリ コンテナーでは問題なく動作しますが、ホスト マシンから同じ接続文字列を使用してデータベースにアクセスする必要もあります。(開発中のデータベース移行用)
ホスト マシンにルートを追加することを考えました:
db-service -> localhostしかし、これはホスト オペレーティング システムに依存するため、適切な解決策ではありません。ホストマシンがデータベースコンテナーに接続するため、接続文字列でlocalhostを使用しようとしました。しかし、明らかに、アプリケーション コンテナは接続できなくなります。
また、構成ファイルでnetwork_mode設定とネットワークドライバーをいじってみましたが、うまくいきませんでした。
ホスト マシンのようにコンテナーで同じホスト名を使用するにはどうすればよいですか?