質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

1117閲覧

docker-composeでNode.js Expressからmongooseを使ってMongoに繋げたい

sakas1231

総合スコア42

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2018/10/01 13:19

docker-composeでexpressからmongoに繋げようとしているのですが、nodeコンテナで下記エラーが出て来てしまい、繋がりません。

$ docker-compose logs | grep "node " node | { MongoNetworkError: failed to connect to server [mongo:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 172.18.0.3:27017] node | at Pool.<anonymous> (/app/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:564:11) node | at emitOne (events.js:116:13) node | at Pool.emit (events.js:211:7) node | at Connection.<anonymous> (/app/node_modules/mongodb/node_modules/mongodb-core/lib/connection/pool.js:317:12) node | at Object.onceWrapper (events.js:317:30) node | at emitTwo (events.js:126:13) node | at Connection.emit (events.js:214:7) node | at Socket.<anonymous> (/app/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:246:50) node | at Object.onceWrapper (events.js:315:30) node | at emitOne (events.js:116:13) node | at Socket.emit (events.js:211:7) node | at emitErrorNT (internal/streams/destroy.js:66:8) node | at _combinedTickCallback (internal/process/next_tick.js:139:11) node | at process._tickCallback (internal/process/next_tick.js:181:9) node | name: 'MongoNetworkError', node | errorLabels: [ 'TransientTransactionError' ], node | [Symbol(mongoErrorContextSymbol)]: {} }

どなたかわかりますでしょうか。
ソースコードは以下です(抜粋)。

// bin/www var app = require('../app'); var port = normalizePort(process.env.PORT || '3000'); app.set('port', port); var server = http.createServer(app); const mongoose = require('mongoose'); mongoose.connect('mongodb://mongo:27017/hoge', {useNewUrlParser: true}).then(() => { console.log('connected!!'); }, err => { //常にここに入ってしまう console.log(err); });
// docker-compose.yml mongo: image: mongo:4.0 restart: always container_name: mongo volumes: - ./mongo:/data/db expose: - 27017 ports: - 27017:27017 environment: MONGODB_USER: ${MONGODB_USERNAME} MONGODB_PASS: ${MONGODB_PASSWORD} app: build: ./ container_name: node tty: true volumes: - ./:/app ports: - 3000:3000 links: - mongo

hogeデータベースの存在確認

$ docker-compose exec mongo mongo // mongoコンテナ内でmongo起動 > show dbs admin 0.000GB config 0.000GB local 0.000GB hoge 0.000GB // hogeデータベースの存在確認

バージョン

node: 8.12.0 mongodb: 4.0 == npm == express: 4.16.0 mongoose: 5.3.0

よろしくお願いします!!!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

docker-compose.ymlでexposeとportsの両方を指定するとホスト向けに二回ポートを開こうとして怒られていたみたいです。
exposeのみ記述して無事起動確認できました。

投稿2018/10/04 05:33

sakas1231

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問