在容器NodeJS + MongoDB之间创建Docker连接

时间:2018-08-29 15:57:34

标签: node.js mongodb docker

主要任务是在端口上运行docker并通过localhost连接到它们。

应如何工作:


服务#1 (./service_one/docker-compose.yml)

在端口3001上的

NodeJS#1

端口27018上的MongoDB#1

节点#1 localhost:27018(或默认为localhost:27017)连接到 MongoDB#1


服务#2 (./service_two/docker-compose.yml)

NodeJS#2 在端口3002

端口27019上的MongoDB#2

节点#2 通过localhost:27018连接到 MongoDB#1 ,并通过localhost:27019连接到 MongoDB#2 默认localhost:27017


NodeJS#1 可通过http://localhost:3001/获得。

NodeJS#2 可通过http://localhost:3002/获得。

MongoDB#1 可通过localhost:27018使用。

MongoDB#2 可通过localhost:27019使用。


当前配置状态为:

version: '3.1'
services:
  node-users:
    container_name: node-users
    command: "npm start"
    depends_on:
      - mongo-users
    expose:
      - 3001
    image: node:10.9.0
  mongo-users:
    container_name: mongo-users
    expose:
      - 27018
    image: mongo:4.0.1
    ports:
      - 27018:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: user
      MONGO_INITDB_ROOT_PASSWORD: user
      MONGO_INITDB_DATABASE: user
    hostname: mongo-users

第二个。

version: '3.1'
services:
  node-auth:
    container_name: node-auth
    command: "npm start"
    depends_on:
    - mongo-auth
    expose:
    - 3002
    image: node:10.9.0
  mongo-auth:
    container_name: mongo-auth
    expose:
    - 27019
    image: mongo:4.0.1
    ports:
    - 27019:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: auth
      MONGO_INITDB_ROOT_PASSWORD: auth
      MONGO_INITDB_DATABASE: auth
    hostname: mongo-auth
    # network_mode: host won't work on docker for Mac!!!
    network_mode: host

很奇怪,但是没有可理解的教程。

更新。

例如,我想从 NodeJS#1 连接到 MongoDB#1

我的连接字符串为:

mongodb://user:user@mongo-users:27017/user

哪个效果很好。但是从 NodeJS#2 使用它时,由于mongo-users在Mac上无法运行(在Windows或任何Linux上都可以),因此无法访问network_mode: host。因此,我的容器无法在其他人的计算机上工作。

failed to connect to server [mongo-users:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND mongo-users mongo-users:27017]

我尝试使用bridge创建网络。但是没有一种解决方案对我有用。

0 个答案:

没有答案