0

アプリケーション サービスとデータベース サービスに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設定とネットワークドライバーをいじってみましたが、うまくいきませんでした。

ホスト マシンのようにコンテナーで同じホスト名を使用するにはどうすればよいですか?

4

1 に答える 1

1

アプリ サービスとホストの両方に同じ接続文字列を使用できる唯一の方法は、ホストの/etc/hostsファイルを次のように更新することです。

127.0.0.1 db-service

(または、Docker マシンで実行している場合は your を使用します)

しかし、この解決策は最もクリーンな解決策ではないかもしれません。最良の方法は、IMO、同じ接続文字列を使用しないことです。

于 2016-12-15T17:24:40.170 に答える