編集:
私はスプリングブート開発を行ったことがありませんが、表示されていると言っているエラーは、mongoの問題とはまったく関係がない可能性があります。ただし、mongo接続が失敗する理由については次の説明があります:
docker-compose
(あなたの場合のように)ファイルで仮想ネットワークが指定されていない場合は、仮想ネットワークを作成します。
すべてのアプリケーションはこのネットワーク内で実行され、互いに完全に分離されています。そのため、localhost
スプリングブートコンテナでは、実際にはそれ自体を指します。スプリングブートアプリケーションがmongo
を期待していることを意味します コンテナ内で実行されるインスタンス(そうではなく、別のコンテナ内にあります)。
これは、データベースとアプリケーションの両方がラップトップのネットワークで実行されている場合は問題ありませんでした。ただし、前述のように、現在はdocker-compose
で実行されています。 ネットワーク、完全に分離されています。
ただし、docker-compose
本当に賢いです!サービス名(この場合はmongo
)を使用するコンテナごとにDNSを作成します およびspring
)docker-compose
で指定 ネットワーク内のコンテナに簡単にアクセスできるようにするファイル。
したがって、spring.data.mongodb.uri=mongodb://localhost:27017/db
を変更できるはずです。 spring.data.mongodb.uri=mongodb://mongo:27017/db
へ それで接続できるはずです。