Expressを使用し、(boot2docker)dockermongoコンテナーに接続するノードアプリを実行したいと思います。
私が最初にアプリを作成したとき、ローカルにインストールされたmongodbのインスタンスを使用していましたが、次の構成が機能しました。
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://localhost/fullstack-dev'
}
};
そして、それは期待通りに実行されました。
今、私はそれをmongoのdockerインスタンスと交換しようとしています。
そこで、mongoを実行するために次の手順を実行しました。
$ docker pull mongo:latest
$ docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
$ docker ps
#my mongo instance is 442c2541fe1a
$ docker exec -it 442c2541fe1a bash
$ mongo
この時点で、コマンドプロンプトで実行されているように見えます。
次に、osxでdockerを実行するboot2dockervmのIPを取得しようとしました。
$ boot2docker ip
# the IP returned: 192.168.59.103
そこで、nodejs構成の古いmongodbパスを次のように交換しました。
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://192.168.59.103:27017/fullstack-dev'
}
};
アプリケーションを実行すると、接続エラーが発生します。
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [192.168.59.103:27017]
MEANスタックアプリケーションをDocker化されたmongodbインスタンスに接続するための適切な構成は何ですか?
次の-p
引数を使用して、コンテナに適切なポートを公開する必要があります。
docker run -p 27017:27017 -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
これにより、ホスト(この場合はVM)でポート27017にアクセスできるようになり、コンテナーのポート27017にトラフィックが転送されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加