gpt4 book ai didi

python - 无法从 docker 容器中的 flask 连接到 mongo

转载 作者:可可西里 更新时间:2023-11-01 09:34:13 24 4
gpt4 key购买 nike

我有一个运行以下命令的 python 脚本

import mongoengine
client = mongoengine.connect('ppo-image-server-db', host="db", port=27017)
db = client.test_db

test_data = {
'name' : 'test'
}

db.test_data.insert_one( test_data )
print("DONE")

我有一个如下所示的 docker-compose.yml

version: '2'
networks:
micronet:

services:
user-info-service:
restart : always
build : .
container_name: test-user-info-service
working_dir : /usr/local/app/test
entrypoint : ""
command : ["manage", "run-user-info-service", "--host=0.0.0.0", "--port=5000"]
volumes :
- ./:/usr/local/app/test/
ports :
- "5000:5000"
networks :
- micronet
links:
- db

db:
image : mongo:3.0.2
container_name : test-mongodb
volumes :
- ./data/db:/data/db
ports :
- "27017:27017"

然而,每次当我运行 docker-compose build 和 docker-compose up 时,python 脚本都无法找到主机(在本例中为“db”)。我是否需要任何特殊链接或任何环境变量来传递 mongo 服务器的 IP 地址?

我仍然可以使用 robomongo 访问 dockerized mongo-db

请注意,我还没有为这个测试用例创建任何 docker-machine。

你能帮我指出我的配置中缺少什么吗?

最佳答案

是的,

您需要的是告诉 docker 一个应用程序依赖于另一个应用程序。这是我构建 docker-compose 的方式:

version: '2'
services:
mongo-server:
image: mongo
volumes:
- .data/mdata:/data/db # mongodb persistence

myStuff:
build: ./myStuff
depends_on:
- mongo-server

此外,在连接 url 中,您需要使用 url "mongo-server"。 Docker 将负责将您的代码连接到 mongo 容器。

例子:

private val mongoClient: MongoClient = MongoClient("mongodb://mongo-server:27017")

这应该可以解决你的问题

关于python - 无法从 docker 容器中的 flask 连接到 mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43199845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com