[英]Docker compose getting error ECONNREFUSED 127.0.0.1:27018 with MongoDB and NodeJs
[英]NodeJS Mongodb in docker compose = ECONNREFUSED
我試圖通過docker-compose建立一個與MongoDB容器鏈接的Node.JS容器,但系統地node.js返回一個ECONNREFUSED錯誤。
錯誤
nodejs_1 | /code/node_modules/mongoose/node_modules/mongodb/lib/server.js:228
nodejs_1 | process.nextTick(function() { throw err; })
nodejs_1 |
nodejs_1 | Error: connect ECONNREFUSED
nodejs_1 | at exports._errnoException (util.js:746:11)
nodejs_1 | at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
NodeJS代碼
var db = 'mongodb://database:27017/wondrapi';
mongoose.connect(db);
泊塢窗,compose.yml
web:
build: ./web
ports:
- "8080:80"
links:
- nodejs
volumes:
- ./web:/usr/share/nginx/html:ro
nodejs:
build: ./api
ports:
- "8081:3000"
links:
- database
command: npm start
database:
image: mongo
volumes:
- db:/data/db
ports:
- 27017
Dockerfile(./ api)
FROM node
ADD package.json /code/
WORKDIR /code
RUN npm install
ADD . /code
我該如何解決錯誤?
我解決了我的問題:
我嘗試在mongodb服務器完全啟動之前設置我的連接(從節點)到mongodb(第一次啟動需要5/6秒)。
因此,在mongo接受請求之前,我只需要在節點的每個請求之前用1秒重試連接幾次(3/4次)。
var connectWithRetry = function() {
return mongoose.connect(db, function(err) {
if (err) {
console.error('Failed to connect to mongo on startup - retrying in 1 sec', err);
setTimeout(connectWithRetry, 1000);
}
});
};
connectWithRetry();
你應該使用:
docker stack deploy --compose-file <compose-file-name> <app-name>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.