docker - 将docker服务容器中的应用程序连接到在外部网络docker容器上运行的数据库

标签 docker docker-compose

我正在尝试使用同一台主机上自己的网络将某个 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:

This is for development purpose and will not work in a production environment outside of Docker Desktop for Mac.



任何想法如何在服务器上运行时解决此问题?

最佳答案

您需要使用Container名称而不是网络进行连接,请尝试以下操作:

mongodb://db-mongo:27017

关于docker - 将docker服务容器中的应用程序连接到在外部网络docker容器上运行的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57651847/

相关文章:

docker - 谁负责健康检查?撰写还是容器本身?

docker - 分配网络资源失败

docker - 流明:PHPUnit失败,但在Gitlab CI Runner中通过了测试

docker - 使用 docker 容器安装 redmine 插件

docker - 如何正确设置基本的 traefik 反向代理?

docker - Docker + Nginx允许来自外部docker的上游gunicorn

docker - 如何使用docker image运行docker-compose?

docker - 如何在 Docker 容器中设置 VB6 IDE(在 Windows 上)?

docker - 为什么我不能将容器附加到 docker 网络?

postgresql - Docker群在容器中执行命令