我建立了两个共享一个公共数据库的NEST应用程序。我一直在尝试找出一种方法来使这两个应用程序从Mongo数据库容器中获取数据。我坚持这个过程。
带有应用程序1的docker-compose.yml
version: '3'
services:
backend:
image: 'example-image_1:1.0.0'
working_dir: /app/example-app-1/backend/example-app-1-api
environment:
- DB_URL=mongodb://0.0.0.0:27017/example_app_1
- BACKEND_PORT=3333
- BACKEND_IP=0.0.0.0
restart: always
network_mode: "host"
ports:
- '3333:3333'
command: ['node', 'main.js']
depends_on:
- mongodb
expose:
- 3333
mongodb:
image: 'mongo:latest'
environment:
- 'MONGODB_DATABASE="example_app_1"'
ports:
- '27017:27017'
expose:
- 27017
带有app-2的docker-compose.yml
version: '3'
services:
backend:
image: 'example_app_2:1.0.0'
working_dir: /app/example_app_2/backend/example-app-2-api
environment:
- DB_URL=mongodb://0.0.0.0:27017/example_app_2
- BACKEND_PORT=8888
- BACKEND_IP=0.0.0.0
restart: always
ports:
- '8888:8888'
command: ['node', 'main.js']
expose:
- 8888
mongodb:
image: 'mongo:latest'
environment:
- 'MONGODB_DATABASE="example_app_2"'
ports:
- '27017:27017'
expose:
- 27017
我需要帮助使这些应用与普通容器通信-mongodb
由于您使用的是2种不同的设备docker-compose.yml
,因此实际上您在2种设备上运行了2个后端和2个mongodbdocker-networks
2个mongo之一无法启动,因为该端口已被占用。
选项1(更细):
services:
backend_1:
...
ports:
- '8888:8888'
backend_2:
...
ports:
- '8899:8899'
mongodb:
ports:
- '27017:27017'
此设置在同一网络上提供3个容器。现在您可以从两个后端的mongo访问<mongo_ip>:27017
选项2(丑陋):
services:
backend:
...
ports:
- '8888:8888'
mongodb:
ports:
- '27017:27017'
然后在另一个docker-compose中
services:
backend:
...
ports:
- '8888:8888'
此设置在2个不同的网络上提供3个容器。在此设置中,每个docker-compose.yml
都有自己的泊坞窗网络,因此从第二个后端服务中,您必须连接到另一个泊坞窗网络才能访问该容器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句