Mongo连接被拒绝ECCONREFUSED

时间:2016-08-22 11:04:13

标签: mongodb docker docker-compose

我在Docker容器中运行了一个带有docker compose的应用程序。在日志中,容器启动数据库并使其侦听端口27017

稍后在应用程序中,构建了网站的其余部分后,它会尝试连接到该端口上的该数据库,并因ECONNREFUSED 127.0.0.1:27017而失败

我认为这可能是一件非常基本的事情,我不会在这里理解,但会非常感谢帮助

Starting maroon_db_1
Recreating maroon_web_1
Attaching to maroon_db_1, maroon_web_1
db_1   | 2016-08-22T10:50:27.114+0000 I CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=e3a671f93ded
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten] db version v3.2.9
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten] git version: 22ec9e93b40c85fc7cae7d56e7d6a02fd811088c
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten] allocator: tcmalloc
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten] modules: none
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten] build environment:
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten]     distmod: debian71
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten]     distarch: x86_64
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten]     target_arch: x86_64
db_1   | 2016-08-22T10:50:27.115+0000 I CONTROL  [initandlisten] options: {}
db_1   | 2016-08-22T10:50:27.150+0000 I -        [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
db_1   | 2016-08-22T10:50:27.150+0000 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
db_1   | 2016-08-22T10:50:27.508+0000 I CONTROL  [initandlisten]
db_1   | 2016-08-22T10:50:27.508+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
db_1   | 2016-08-22T10:50:27.508+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
db_1   | 2016-08-22T10:50:27.508+0000 I CONTROL  [initandlisten]
db_1   | 2016-08-22T10:50:27.508+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
db_1   | 2016-08-22T10:50:27.508+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
db_1   | 2016-08-22T10:50:27.508+0000 I CONTROL  [initandlisten]
db_1   | 2016-08-22T10:50:27.522+0000 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
db_1   | 2016-08-22T10:50:27.522+0000 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
db_1   | 2016-08-22T10:50:27.543+0000 I NETWORK  [initandlisten] waiting for connections on port 27017
web_1  |
web_1  | > mern-starter@2.0.0 bs /usr/src/app
web_1  | > npm run clean && npm run build && npm run build:server && npm run start:prod
web_1  |
web_1  |
web_1  | > mern-starter@2.0.0 clean /usr/src/app
web_1  | > rimraf dist
web_1  |
web_1  |
web_1  | > mern-starter@2.0.0 build /usr/src/app
web_1  | > cross-env NODE_ENV=production webpack --config webpack.config.prod.js
web_1  |
web_1  | This preset is no longer necessary and can be replaced by the following:
web_1  |        presets: [
web_1  |            ["es2015", { "modules": false }]
web_1  |        ]
web_1  | Hash: afd840974c1321403cd5
web_1  | Version: webpack 2.1.0-beta.8
web_1  | Time: 19804ms
web_1  |                                Asset       Size  Chunks             Chunk Names
web_1  |          app.edcea8de66cc864a67a5.js     375 kB       3  [emitted]  app
web_1  | bbaeb5f32b7042f0def39648a1d111b9.png    15.8 kB          [emitted]
web_1  |                            vendor.js     148 kB       0  [emitted]  vendor
web_1  |            1.b6dee935292b81563830.js    7.85 kB       1  [emitted]
web_1  |            2.6f2172bc1184d6c25200.js    1.55 kB       2  [emitted]
web_1  |                  chunk-manifest.json   97 bytes          [emitted]
web_1  |         app.edcea8de66cc864a67a5.css    3.04 kB       3  [emitted]  app
web_1  |         app.b6dee935292b81563830.css  708 bytes       1  [emitted]
web_1  |     app.b6dee935292b81563830.css.map  105 bytes       1  [emitted]
web_1  |     app.edcea8de66cc864a67a5.css.map  105 bytes       3  [emitted]  app
web_1  |                        manifest.json  508 bytes          [emitted]
web_1  |  [648] multi app 28 bytes {3} [built]
web_1  |  [649] multi vendor 40 bytes {0} [built]
web_1  |     + 655 hidden modules
web_1  | Child extract-text-webpack-plugin:
web_1  |         + 2 hidden modules
web_1  | Child extract-text-webpack-plugin:
web_1  |         + 2 hidden modules
web_1  | Child extract-text-webpack-plugin:
web_1  |         + 2 hidden modules
web_1  | Child extract-text-webpack-plugin:
web_1  |         + 2 hidden modules
web_1  | Child extract-text-webpack-plugin:
web_1  |         + 2 hidden modules
web_1  | Child extract-text-webpack-plugin:
web_1  |         + 3 hidden modules
web_1  |
web_1  | > mern-starter@2.0.0 build:server /usr/src/app
web_1  | > cross-env NODE_ENV=production webpack --config webpack.config.server.js
web_1  |
web_1  | This preset is no longer necessary and can be replaced by the following:
web_1  |        presets: [
web_1  |            ["es2015", { "modules": false }]
web_1  |        ]
web_1  | babel-plugin-webpack-loader:
web_1  | To avoid caching errors you need to set BABEL_DISABLE_CACHE=1 environment variable.
web_1  | More information at issue #36
web_1  | Hash: eaa3e07d940766fdd179
web_1  | Version: webpack 2.1.0-beta.8
web_1  | Time: 74596ms
web_1  |            Asset     Size  Chunks             Chunk Names
web_1  | server.bundle.js  75.5 kB       0  [emitted]  main
web_1  |     + 63 hidden modules
web_1  |
web_1  | > mern-starter@2.0.0 start:prod /usr/src/app
web_1  | > cross-env NODE_ENV=production node index.js
web_1  |
web_1  | was local
web_1  | server config { mongoURL: 'mongodb://localhost:27017/mern-starter',
web_1  |   port: 3030 }
web_1  | MERN is running on port: 3030! Build something amazing!
web_1  | Please make sure Mongodb is installed and running!
web_1  |
web_1  | /usr/src/app/node_modules/mongodb/lib/server.js:242
web_1  |         process.nextTick(function() { throw err; })
web_1  |                                       ^
web_1  | Error: connect ECONNREFUSED 127.0.0.1:27017
web_1  |     at Object.exports._errnoException (util.js:837:11)
web_1  |     at exports._exceptionWithHostPort (util.js:860:20)
web_1  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1060:14)
web_1  |
web_1  | npm ERR! Linux 4.4.15-moby
web_1  | npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "start:prod"
web_1  | npm ERR! node v4.0.0
web_1  | npm ERR! npm  v2.14.2
web_1  | npm ERR! code ELIFECYCLE
web_1  | npm ERR! mern-starter@2.0.0 start:prod: `cross-env NODE_ENV=production node index.js`
web_1  | npm ERR! Exit status 1
web_1  | npm ERR!
web_1  | npm ERR! Failed at the mern-starter@2.0.0 start:prod script 'cross-env NODE_ENV=production node index.js'.
web_1  | npm ERR! This is most likely a problem with the mern-starter package,
web_1  | npm ERR! not with npm itself.
web_1  | npm ERR! Tell the author that this fails on your system:
web_1  | npm ERR!     cross-env NODE_ENV=production node index.js
web_1  | npm ERR! You can get their info via:
web_1  | npm ERR!     npm owner ls mern-starter
web_1  | npm ERR! There is likely additional logging output above.
web_1  |
web_1  | npm ERR! Please include the following file with any support request:
web_1  | npm ERR!     /usr/src/app/npm-debug.log
web_1  |
web_1  | npm ERR! Linux 4.4.15-moby
web_1  | npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "bs"
web_1  | npm ERR! node v4.0.0
web_1  | npm ERR! npm  v2.14.2
web_1  | npm ERR! code ELIFECYCLE
web_1  | npm ERR! mern-starter@2.0.0 bs: `npm run clean && npm run build && npm run build:server && npm run start:prod`
web_1  | npm ERR! Exit status 1
web_1  | npm ERR!
web_1  | npm ERR! Failed at the mern-starter@2.0.0 bs script 'npm run clean && npm run build && npm run build:server && npm run start:prod'.
web_1  | npm ERR! This is most likely a problem with the mern-starter package,
web_1  | npm ERR! not with npm itself.
web_1  | npm ERR! Tell the author that this fails on your system:
web_1  | npm ERR!     npm run clean && npm run build && npm run build:server && npm run start:prod
web_1  | npm ERR! You can get their info via:
web_1  | npm ERR!     npm owner ls mern-starter
web_1  | npm ERR! There is likely additional logging output above.
web_1  |
web_1  | npm ERR! Please include the following file with any support request:
web_1  | npm ERR!     /usr/src/app/npm-debug.log
maroon_web_1 exited with code 1

1 个答案:

答案 0 :(得分:2)

您是否在docker-compose.yml中为MongoDB公开了端口27017?但是,如果您不想将MongoDB暴露给Internet(推荐的方式),您可以使用Docker的内部DNS连接MongoDB(docker-compose.yml的示例):

mongodb: image: mongo:3.2 web: build: . environment: - MONGODB_URL=mongodb://mongodb:27017/mern-starter

然后在您的应用程序中,您可以使用MONGODB_URL环境变量来连接MongoDB。