首页 > 解决方案 > MERN 堆栈无法将数据库连接到 Docker 容器

问题描述

美好的一天...关于使用 dockerfiles 和 docker-compose.yml 在 docker 上集成 MERN 堆栈 Web 应用程序。本地主机:8000 是我的后端,本地主机:3000 也是我的前端端口。我正在运行它在本地.. mongo 上的凭据是正确的.. 然后我将网络放在 docker-compose 和驱动程序中:“bridge”,在同一个网络上.. 在我构建容器并在 docker 上运行应用程序之后.. 错误如下所述:

[0] [http-server] listening: http://localhost:8000/
[1] ℹ 「wds」: Project is running at http://172.20.0.3/
[1] ℹ 「wds」: webpack output is served from
[1] ℹ 「wds」: Content not from webpack is served from /maint/client/public
[1] ℹ 「wds」: 404s will fallback to /
[1] Starting the development server...
[1]
[0] connect ECONNREFUSED 127.0.0.1:27017
[0] ERROR: Cannot connect to the database
[0] Exiting now...
[0] [nodemon] app crashed - waiting for file changes before starting...

我的码头文件:

# get the base node image
FROM node:10.15.2

# set the working dir for container
WORKDIR /maint

# copy the json file first
COPY ./package.json /maint

RUN "npm ci"

# copy other project files
COPY . .

# build the folder
CMD [ "npm", "run", "start" ]

在我的 docker-compose-local.yml 里面

version: '3'
services:
    maint:
      build:
        context: .
        dockerfile: Dockerfile.dev
      command: npm run dev
      container_name: mat-docker
      volumes:
        - ./:/maint
        - /maint/node_modules
      ports:
        - "3000:3000"
      depends_on:
        - mongo
      networks:
        - app-network
    mongo:
      image: mongo
      container_name: mat-dockerdb
      ports:
        - "27017:27017"
      env_file: .env
      environment:
        - MONGO_HOST:$MONGO_HOST
        - MONGO_DB:$MONGO_DB
        - MONGO_USERNAME:"admin"
        - MONGO_PASSWORD:"password123"
      networks:
        - app-network

networks:
  app-network:
    driver: bridge

标签: node.jsreactjsdockerdocker-composemern

解决方案


只需使用主机网络,您就可以更轻松地做到这一点。这样,您的主要服务和 mongo 实例使用与后端相同的主机网络。这是执行此操作的案卷撰写应用程序的示例

 version: "2"
 services:
 app:
    container_name: app
    network_mode: host
    restart: always
    build: .
    ports:
      - "3000:3000”
    depends_on:
      - mongo
 mongo:
    container_name: mongo
    image: mongo
    network_mode: host
    volumes:
      - ./data:/data/db
    ports:
      - "27017:27017"

推荐阅读