我正在尝试将属于 docker-compose服务的某些应用程序连接到在同一主机上使用自己网络的单独docker容器中运行的MongoDB 。应用程序应使用哪个URL连接到该外部网络?
我的步骤...
创建一个网络并在该网络上启动MongoDB:
docker network create my_app_mongo_db
docker run --name db-mongo -d --network=my_app_mongo_db -p 27017:27017 mongo
像这样创建docker-compose.yaml
:
version: "3"
services:
my_app:
image: my_app
container_name: my_app
networks:
- default
- my_app_mongo_db
networks:
default:
my_app_mongo_db:
external: true
docker-compose -up
正常运行,并且docker network inspect my_app_mongo_db
显示该服务已连接到外部网络。
接下来,我尝试使用此URL连接到MongoDB,类似地,如果数据库作为服务运行,我将如何连接到数据库:
mongodb://my_app_mongo_db:27017
但是,这种方法不适用于外部网络。起作用的是使用host.docker.internal
:
mongodb://host.docker.internal:27017
但是根据this Docker doc:
这是出于开发目的,不适用于Mac的Docker Desktop以外的生产环境。
任何想法在服务器上运行时如何解决?
答案 0 :(得分:1)
您需要使用Container
名称而不是网络进行连接,请尝试以下操作:
mongodb://db-mongo:27017