我正在使用docker-compose运行2个图像:flask Web服务器和mongodb数据库。
如果我仅启动mongodb数据库容器(官方镜像)并在本地运行flask应用程序,则它将正常工作(连接到localhost:27017)。我还可以使用图形界面MongodbCompass访问位于localhost:27017的mongodb。
但是,当我使用2个服务启动docker-compose时,我的连接被拒绝:pymongo.errors.ServerSelectionTimeoutError:localhost:27017:[Errno 111]连接被拒绝
从容器化的flask应用程序中,我尝试同时连接到localhost:27017和mongo:27017(这是服务的名称),但均出现错误。使我发疯的是,在这种情况下,我仍然能够使用MongodbCompass连接到localhost:27017。
这是我的docker-compose文件:
version: '3'
services:
mongo:
image: mongo
volumes:
- /mnt/usb/data:/data/db
ports:
- 27017:27017
frontend:
build: frontend/.
ports:
- 80:8080
depends_on:
- mongo
最佳答案
首先,您需要像这样暴露端口27017:
expose:
- 27017
那么您必须将其链接到您的容器:
links:
- mongodb:mongodb-host
左一个是容器的名称,右一个是容器中的主机名。
您可以使用mongodb-host主机名访问容器中的mongo。