尝试通过Docker Compose将NodeJS应用连接到MongoDB

我正在跟着我的应用程序的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"] 

泊坞窗,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" 

当使用docker-compose时,为了容器连接到另一个容器,它可以使用服务名称作为主机名来连接。

在你的情况下,节点应用程序需要连接到mongo:27017而不是localhost:27017 ,因为来自相应应用程序容器的localhost将引用它自己而不是你的机器。

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

 app: ... env_file: - file.env