我正在尝试使用同一台主机上自己的网络将某个 docker-compose服务的应用程序连接到在单独docker容器中运行的MongoDB。应用程序应使用哪个URL连接到该外部网络? This is for development purpose and will not work in a production environment outside of Docker Desktop for Mac.
我的脚步...
创建一个网络并在该网络上启动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:
任何想法如何在服务器上运行时解决此问题?
最佳答案
您需要使用Container
名称而不是网络进行连接,请尝试以下操作:
mongodb://db-mongo:27017
关于docker - 将docker服务容器中的应用程序连接到在外部网络docker容器上运行的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57651847/