尝试通过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
- Docker组合,webpack权限被拒绝
- 使用docker-compose运行图像的多个实例失败
- Docker撰写,反应JS应用程序构build,以及如何传递给第一个nginx
- 使用“allow”指令将对nginx服务器位置的访问限制到特定的Docker容器
- heroku审查应用程序:部署docker集装箱
- Docker容器中的多个公共ip地址用于传出连接
- 系统日志驱动程序不能与泊坞窗撰写和麋鹿栈
- Docker消耗更多的高清内存
- /home/web/.gem/ruby/2.2.0/gems/redis-3.2.1/lib/redis/connection/ruby.rb:152:in`getaddrinfo':getaddrinfo:名称或服务未知(SocketError)