首页 > 解决方案 > 如何从 docker 容器(在服务器 1 中运行)连接数据库(服务器 2 中的 mongodb)

问题描述

服务器 1->10.0.0.47 服务器 2->10.0.1.202

这两个服务器之间的所有端口都是开放的,因为它们在 aws 中位于同一个 VPN 中

版本:'3.3'

networks:
 net:
    external: true
services:
  backend:
    image: test/test-backend:prod
    ports:
      - "8000:8000"
    depends_on:
      - discovery

错误:连接被拒绝注意当我尝试更改作曲家时,如下所示与 mongo 建立连接但无法访问端口 8000 上的服务

networks:
 net:
    external: true
services:
  backend:
    image: test/test-backend:prod
    expose:
       - "27017:27017"
    ports:
       - "8000:8000"
    depends_on:
      - discovery   

                                                                                                                                                                    

标签: dockerdocker-composedockerfiledocker-swarm

解决方案


Expose 指令不会改变任何东西,它仅用于文档。您可以在Dockerfile 参考中了解更多信息。

如果 2 服务器在同一个 Docker 网络中,您可以在其安装配置中将 mongoDB 端口更改为 8000。然后,您不需要在 docker-compose 配置中指定端口等。

如果要从外部访问 mongoDB 服务,则必须将 docker-compose 配置更改为:

ports:
   - "8000:27017"

推荐阅读