【发布时间】:2021-11-21 16:38:55
【问题描述】:
我正在使用虚拟应用程序练习 Docker,但无法连接数据库。如果有人可以提供有关问题可能是什么的线索,请。提前感谢您的帮助。如果需要更多信息,请告诉我。
这是我用于 api 的 Dockerfile:
服务器中的 Dockerfile
FROM node:14-alpine
WORKDIR usr/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3400
CMD ["npm", "start"]
这是我在 db.js 中与 db 的连接
const mongoose = require('mongoose');
const uri = 'mongodb://mongo:27017/prueba-docker';
const connect = async () => {
try {
await mongoose.connect(uri, {});
console.log('conected to db');
} catch (err) {
console.log('error connecting to db', err);
}
};
module.exports = { connect };
这里是 docker-compose
version: "3"
services:
prueba-react:
image: prueba-react
build: ./client/
stdin_open: true
ports:
- "3000:3000"
networks:
- mern-app
prueba-api:
image: prueba-api
build: ./server/
ports:
- "3400:3400"
networks:
- mern-app
depends_on:
- db
db:
image: mongo:4.4-bionic
ports:
- "27017:27017"
networks:
- mern-app
volumes:
- mongo-data:/data/db
networks:
mern-app:
driver: bridge
volumes:
mongo-data:
driver: local
首先我发现我应该使用该命令停止 mongo,因为我遇到了端口冲突。
sudo systemctl stop mongod
但是现在我不明白为什么当我做 docker-compose up 时它会报错
这是我得到的错误
prueba-api_1 | error connecting to db MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo
prueba-api_1 | at NativeConnection.Connection.openUri (/usr/app/node_modules/mongoose/lib/connection.js:796:32)
prueba-api_1 | at /usr/app/node_modules/mongoose/lib/index.js:328:10
prueba-api_1 | at /usr/app/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
prueba-api_1 | at new Promise (<anonymous>)
prueba-api_1 | at promiseOrCallback (/usr/app/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
prueba-api_1 | at Mongoose._promiseOrCallback (/usr/app/node_modules/mongoose/lib/index.js:1149:10)
prueba-api_1 | at Mongoose.connect (/usr/app/node_modules/mongoose/lib/index.js:327:20)
prueba-api_1 | at Object.connect (/usr/app/db.js:6:20)
prueba-api_1 | at Object.<anonymous> (/usr/app/app.js:6:4)
prueba-api_1 | at Module._compile (internal/modules/cjs/loader.js:1072:14) {
prueba-api_1 | reason: TopologyDescription {
prueba-api_1 | type: 'Unknown',
prueba-api_1 | servers: Map(1) { 'mongo:27017' => [ServerDescription] },
prueba-api_1 | stale: false,
prueba-api_1 | compatible: true,
prueba-api_1 | heartbeatFrequencyMS: 10000,
prueba-api_1 | localThresholdMS: 15,
prueba-api_1 | logicalSessionTimeoutMinutes: undefined
prueba-api_1 | }
【问题讨论】:
标签: node.js mongodb docker mongoose