【问题标题】:Make multiple Node js dockerized app communcate to mongodb docker使多个 Node js dockerized 应用程序与 mongodb docker 通信
【发布时间】:2020-05-29 04:03:19
【问题描述】:

我已经构建了两个共享公共数据库的 NEST 应用程序。我一直在想办法让这两个应用程序从 Mongo db 容器中获取数据。我被这个过程卡住了。

docker-compose.yml 与应用 1

version: '3'

services:  
  backend:
    image: 'example-image_1:1.0.0'
    working_dir: /app/example-app-1/backend/example-app-1-api
    environment:
      - DB_URL=mongodb://0.0.0.0:27017/example_app_1
      - BACKEND_PORT=3333
      - BACKEND_IP=0.0.0.0
    restart: always
    network_mode: "host"
    ports:
      - '3333:3333'
    command: ['node', 'main.js']
    depends_on:
      - mongodb

    expose:
      - 3333

  mongodb:
    image: 'mongo:latest'
    environment:
      - 'MONGODB_DATABASE="example_app_1"'
    ports:
      - '27017:27017'
    expose:
      - 27017

docker-compose.yml 与 app-2

version: '3'

services:   
  backend:
    image: 'example_app_2:1.0.0'
    working_dir: /app/example_app_2/backend/example-app-2-api
    environment:
      - DB_URL=mongodb://0.0.0.0:27017/example_app_2
      - BACKEND_PORT=8888
      - BACKEND_IP=0.0.0.0
    restart: always
    ports:
      - '8888:8888'
    command: ['node', 'main.js']
    expose:
      - 8888

  mongodb:
    image: 'mongo:latest'
    environment:
      - 'MONGODB_DATABASE="example_app_2"'
    ports:
      - '27017:27017'
    expose:
      - 27017

我需要帮助以使这些应用程序与通用容器 - mongodb 进行通信

Click link for Architecture Setup

【问题讨论】:

    标签: node.js docker docker-compose nestjs docker-container


    【解决方案1】:

    由于您使用 2 个不同的 docker-compose.yml,您实际上在 2 个 docker-networks 上运行 2 个后端和 2 个 mongodb

    2 个 mongo 中的一个无法启动,因为端口已被占用。

    选项 1(更好):

    services:   
      backend_1:
          ...
        ports:
          - '8888:8888'
      backend_2:
          ...
        ports:
          - '8899:8899'
    
      mongodb:
        ports:
          - '27017:27017'
    

    此设置在同一网络上提供 3 个容器。 现在您可以通过<mongo_ip>:27017<mongo_ip>:27017 两个后端访问 mongo

    选项2(丑陋):

    services:   
      backend:
          ...
        ports:
          - '8888:8888'
    
      mongodb:
        ports:
          - '27017:27017'
    

    在另一个 docker-compose 中

    services:   
      backend:
          ...
        ports:
          - '8888:8888'
    

    此设置在 2 个不同的网络上提供 3 个容器。 在此设置中,每个 docker-compose.yml 都有自己的 docker 网络,因此您必须从第二个后端服务连接到另一个 docker 网络才能访问容器。

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2022-01-06
      • 2022-11-16
      • 2015-12-03
      • 2017-03-14
      • 2017-07-04
      相关资源
      最近更新 更多