【问题标题】:Trying to connect a NodeJS app to MongoDB via Docker Compose尝试通过 Docker Compose 将 NodeJS 应用程序连接到 MongoDB
【发布时间】:2017-11-18 17:20:25
【问题描述】:

我正在使用我的应用程序学习 MongoDB + NodeJS 教程。在没有 Docker 的情况下一切正常。事实上,我可以让应用程序正常工作,直到它需要连接到 MongoDB。

如果我的应用没有看到 MongoDB,它将打印出错误并停止。

这是我的文件

.env

NODE_VIEWS_PATH=../
NODE_PUBLIC_PATH=../
MONGODB_URI='mongodb://127.0.0.1:27017/myappsdb'
...

Dockerfile

FROM node:carbon

# Create app directory
WORKDIR /usr/src/mahrio

COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

COPY . .

EXPOSE 6085

CMD ["npm", "start"]

docker-compose.yml

version: "2"
services:
  app:
    container_name: someappname
    restart: always
    build: .
    ports:
      - "6085:6085"
    links:
      - mongo
    depends_on:
      - mongo
  mongo:
    container_name: mongo
    image: mongo
    volumes:
      - ./tmp:/data/db
    ports:
      - "27017:27017"

【问题讨论】:

  • 您不需要在版本 2+ 中使用 links 撰写文件。

标签: mongodb docker docker-compose dockerfile


【解决方案1】:

当使用 docker-compose 时,对于一个容器连接到另一个容器,它可以使用服务名作为主机名进行连接。

在您的情况下,节点应用程序需要连接到 mongo:27017 而不是 localhost:27017,因为相应应用程序容器中的 localhost 将引用自身而不是您的计算机。

因此,将 mongo url 更改为 MONGODB_URI='mongodb://mongo:27017/myappsdb'。还要确保通过添加以下内容来使用 env 文件:

app:
 ...
 env_file:
   - file.env

【讨论】:

  • 这个 .env 文件与 npm 和 node.. 共享。我认为像这样更改 mongodb_URI 是行不通的,但我会试试临时的。
  • mongodb 已连接,但是当我转到 localhost:6085 时,什么也没有发生(就像它看不到那里的服务器)
猜你喜欢
  • 2019-11-06
  • 2020-04-07
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 2020-03-06
相关资源
最近更新 更多