【问题标题】:I have a problem with dockerizing node js app with mongodb我在使用 mongodb 对节点 js 应用程序进行 dockerizing 时遇到问题
【发布时间】:2021-10-22 04:55:19
【问题描述】:

这是我的 docker-compose 代码

version: '3'
services:
  mongo:
    container_name: "mongo"
    image: "mongo:4.4.8"
    ports:
      - "27017:27017"
  web:
    image: docker-node-mongo
    build: .
    command: "node src/index.js"
    ports:
      - 4000:4000
    depends_on:
      - "mongo"


这是我的 docker 文件

FROM node
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 4000
CMD "node" "src/index.js"

这是我的连接文件


    const mongoose = require("mongoose")
    mongoose.connect("mongodb://mongo:27017/mongo-test", {
        useNewUrlParser: true,
        useCreateIndex: true
    })


这个错误发生了

MongoNetworkError:第一次连接时无法连接到服务器 [127.0.0.1:27017] [错误:连接 ECONNREFUSED 127.0.0.1:27017 web_1 |在 TCPConnectWrap.afterConnect [as oncomplete] (node:net:1146:16) { web_1 |名称:'MongoNetworkError' web_1 | }]

如果你能帮助我,我将不胜感激。

【问题讨论】:

  • 您确定您实际上是在尝试连接到mongo:27017 吗?从错误消息来看,似乎是 localhost 。需要重建docker镜像吗?
  • 哎呀,谢谢你的帮助,我重建它,现在没问题

标签: node.js mongodb docker


【解决方案1】:

试试这个,

Dockerfile

FROM node:alpine
RUN mkdir -p /usr/src/app  # -p create all parent folders
WORKDIR /usr/src/app
COPY package.json ./
COPY package-lock.json ./
RUN npm install
COPY . .

docker-compose.yml

version: "3.8"

services:
  web:
    image: docker-node-mongo
    container_name: docker-node-mongo
    build: .  # path to your Dockerfile
    command: nodemon src/app.js # Use nodemon to reload on changes
    restart: always
    volumes:
      - ./src:/usr/src/app # To enable auto reload on changes
    ports:
      - "4000:4000"
    depends_on:
      - mongo_db

  mongo_db:
    image: mongo
    restart: always
    container_name: mongo_container # Use this in the connection url
    command: mongod -port 27017 --dbpath /data/db --replSet rs0
    ports:
      - "27017:27017"
    volumes:
      - mongo_storage:/data/db

volumes:
  mongo_storage:

连接文件

 const mongoose = require("mongoose")
 mongoose.connect("mongodb://mongo_container:27017/mongo-test?replicaSet=rs0", {
    useNewUrlParser: true,
    useCreateIndex: true,
 })

要在 mongodb 中启用副本集,

docker compose up --build -d # 在 docker 中构建你的应用

docker exec -it mongo_db mongo #进入docker中的mongo shell

rs.initiate({ _id: "rs0", version: 1, members: [{ _id: 0, host : "mongo_db:27017" }] })

请将此用作如何使用 Docker 设置 Node 和 MongoDB。

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 2022-11-04
    • 2020-02-18
    • 2015-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    相关资源
    最近更新 更多