如何使用docker compose通过pymonogo应用程序设置mongodb?
我正在尝试使用docker composer使用mongodb服务器启动python应用程序,但出现以下错误:如何使用docker compose通过pymonogo应用程序设置mongodb?,mongodb,docker,docker-compose,pymongo,Mongodb,Docker,Docker Compose,Pymongo,我正在尝试使用docker composer使用mongodb服务器启动python应用程序,但出现以下错误: pymongo.errors.ServerSelectionTimeoutError:localhost:27017:[Errno 111]连接被拒绝 我真的不明白我的设置中缺少了什么: version: '3.6' services: web: build: . ports: - "5000:5000" - "9000:9000" li
pymongo.errors.ServerSelectionTimeoutError:localhost:27017:[Errno 111]连接被拒绝
我真的不明白我的设置中缺少了什么:
version: '3.6'
services:
web:
build: .
ports:
- "5000:5000"
- "9000:9000"
links:
- db
db:
image: mongo:latest
container_name: "mongodb"
ports:
- 27017:27017
command: mongod --smallfiles # --quiet
redis:
image: "redis:alpine"
我不确定为什么无法连接到似乎已启动的服务器(docker ps
):
您需要将python应用程序配置为在
db:27017
上连接mongo,而不是localhost:27017
当您“在”一个容器中时localhost
指的是容器本身,而不是主机。@tgogos如果我从带有本地主机的主机使用Robonogo,它就可以工作。您确定吗?这是因为您发布了端口27017
。这实际上意味着您正在将mongodb容器端口27017
绑定到主机端口27017。您必须通过使用容器的IP或名称来配置python容器以与mongo通信。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb5a00bb8867 composedir_web "python app.py" 20 seconds ago Up 19 seconds 0.0.0.0:5000->5000/tcp, 0.0.0.0:9000->9000/tcp composedir_web_1
56aeae245ad5 mongo:latest "docker-entrypoint.s…" 14 minutes ago Up 20 seconds 0.0.0.0:27017->27017/tcp mongodb
51c64650bab8 redis:alpine "docker-entrypoint.s…" 14 minutes ago Up 21 seconds 6379/tcp composedir_red