MongoNetworkError:使用 Docker 连接 ECONNREFUSED

问题描述 投票:0回答:1

我的 Express 应用程序遇到问题,我似乎无法解决,我需要一些帮助。我正在尝试将 Express 应用程序连接到 MongoDB 数据库,但似乎从未正确建立连接。情况是这样的:

My Express 应用程序配置为使用连接 URL mongodb://mongodb:27017/myapp 连接到 MongoDB 实例。 当我运行应用程序时,我看到消息“正在添加数据库支持”,但应用程序永远不会超出此点,并且永远不会完成运行。 我检查了数据库配置,它似乎是正确的,并且我还确认 MongoDB 实例已启动并且可以从其他工具访问。 我正在 Docker 容器内运行 Express 应用程序和 MongoDB,并且我已根据需要设置了网络和端口。

有谁知道可能导致此问题的原因以及如何解决该问题?我可以采取哪些额外步骤来诊断和解决 Express 应用程序中的此 MongoDB 连接问题?

控制台

[+] Running 4/4
 ✔ mongodb Pulled                                                                                                                     83.6s 
   ✔ 73d21f84dd46 Pull complete                                                                                                       65.4s 
 ✔ express Pulled                                                                                                                     95.3s 
   ✔ c9401701e983 Pull complete                                                                                                       54.8s 
[+] Running 1/3
 ✔ Network docker_web_default      Created                                                                                             2.2s 
 ⠦ Container docker_web-mongodb-1  Created                                                                                             4.6s 
 ⠏ Container docker_web-express-1  Created                                                                                             1.9s 
Attaching to express-1, mongodb-1
mongodb-1  | mongodb 12:48:15.14 INFO  ==> 
mongodb-1  | mongodb 12:48:15.14 INFO  ==> Welcome to the Bitnami mongodb container
mongodb-1  | mongodb 12:48:15.15 INFO  ==> Subscribe to project updates by watching https://github.com/bitnami/containers
mongodb-1  | mongodb 12:48:15.15 INFO  ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
mongodb-1  | mongodb 12:48:15.15 INFO  ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
mongodb-1  | mongodb 12:48:15.15 INFO  ==> 
mongodb-1  | mongodb 12:48:15.16 INFO  ==> ** Starting MongoDB setup **
mongodb-1  | mongodb 12:48:15.20 INFO  ==> Validating settings in MONGODB_* env vars...
mongodb-1  | mongodb 12:48:16.77 WARN  ==> You set the environment variable ALLOW_EMPTY_PASSWORD=yes. For safety reasons, do not use this flag in a production environment.
mongodb-1  | mongodb 12:48:16.79 INFO  ==> Initializing MongoDB...
mongodb-1  | mongodb 12:48:16.89 INFO  ==> Deploying MongoDB from scratch...
express-1  | express 12:48:20.95 INFO  ==> 
express-1  | express 12:48:21.02 INFO  ==> Welcome to the Bitnami express container
express-1  | express 12:48:21.02 INFO  ==> Subscribe to project updates by watching https://github.com/bitnami/containers
express-1  | express 12:48:21.03 INFO  ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
express-1  | express 12:48:21.03 INFO  ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
express-1  | express 12:48:21.03 INFO  ==> 
express-1  | express 12:48:21.04 INFO  ==> ** Running Express setup **
express-1  | express 12:48:21.06 INFO  ==> Validating settings in EXPRESS_* environment variables...
express-1  | express 12:48:21.06 WARN  ==> EXPRESS_DATABASE_TYPE was not set, the database type will be detected automatically
express-1  | express 12:48:21.44 INFO  ==> Creating Express application in /app
express-1  | express 12:48:23.03 INFO  ==> Adding database support
mongodb-1  | MongoNetworkError: connect ECONNREFUSED 172.18.0.2:27017
mongodb-1  | mongodb 12:48:26.05 INFO  ==> Creating users...
mongodb-1  | mongodb 12:48:26.05 INFO  ==> Users created
mongodb-1  | mongodb 12:48:26.08 INFO  ==> Stopping MongoDB...
mongodb-1  | 
mongodb-1  | mongodb 12:48:28.11 INFO  ==> ** MongoDB setup finished! **
mongodb-1  | mongodb 12:48:28.15 INFO  ==> ** Starting MongoDB **`

docker-compose.yml

# Copyright VMware, Inc.
# SPDX-License-Identifier: APACHE-2.0

version: '2'

services:
  mongodb:
    image: docker.io/bitnami/mongodb:7.0
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  express:
    image: docker.io/bitnami/express:4
    ports:
      - '3000:3000'
    environment:
      - PORT=3000
      - NODE_ENV=development
      - DATABASE_URL=mongodb://mongodb:27017/myapp
      - EXPRESS_SKIP_DB_WAIT=0
      - EXPRESS_SKIP_DB_MIGRATION=0
      - EXPRESS_SKIP_NPM_INSTALL=0
      - EXPRESS_SKIP_BOWER_INSTALL=0
    volumes:
      - './my-project:/app'
    depends_on:
      - mongodb`

重新安装docker 删除容器和镜像,然后重新安装

mongodb express docker-compose
1个回答
0
投票

我已经修好了!我在

FAT32
闪存驱动器上运行 docker compose up,因此“npm”永远无法完成运行。 将我的随身碟格式化为 ext4 后,我能够运行
docker compose up
并且我的应用程序运行正确。 简而言之文件系统的兼容性问题(如果你想知道我为什么使用闪存驱动器,那是因为我的项目要传输到大学)

© www.soinside.com 2019 - 2024. All rights reserved.