【发布时间】:2019-01-14 08:49:58
【问题描述】:
我有一个示例应用程序,它由三个部分组成:
- mongo 数据库
- node api(服务器端)
- Angular Web 应用程序(客户端)
目标是将这三个部分容器化并运行应用程序。
为了到达那里,我创建了docker-compose.yml 文件,如下所示:
# docker-compose -f docker-compose.prod.yml build
# docker-compose -f docker-compose.prod.yml up -d
# docker-compose -f docker-compose.prod.yml down
version: '3'
services:
mongodb:
image: mongo
container_name: mongodb-instance-microservices
ports:
- "27020:27017"
networks:
- microservices-network
client:
container_name: client-instance-microservices
image: client-microservices
build:
context: ./client
dockerfile: prod.dockerfile
ports:
- "8080:80"
- "443:443"
depends_on:
- api
networks:
- microservices-network
api:
container_name: api-instance-microservices
image: api-microservices
build:
context: ./server
dockerfile: server.dockerfile
environment:
- NODE_ENV=production
ports:
- "3000:3000"
depends_on:
- mongodb
networks:
- microservices-network
networks:
microservices-network:
driver: bridge
在服务器端,我正在运行主 app.js,它正在尝试使用此连接字符串连接到 mongodb:
mongodb://mongodb-instance-microservices:27020/TestDatabase
问题是服务器无法连接到 mongo db 容器。 我试图公开 mongo 的默认端口,如下所示:
mongodb:
image: mongo
container_name: mongodb-instance-microservices
ports:
- "27017:27017"
networks:
- microservices-network
并像这样更新 app.js 文件中的连接字符串:
mongodb://mongodb-instance-microservices:27017/TestDatabase
它工作正常。
问题是如何为 mongo 容器暴露不同的端口并使其正常工作?
【问题讨论】:
标签: node.js mongodb docker docker-compose