gpt4 book ai didi

php - Zend Framework 2 + docker :MongoDB ConnectionTimeoutException

转载 作者:行者123 更新时间:2023-12-02 19:28:41 24 4
gpt4 key购买 nike

我正在使用Zend Framework 2和MongoDB v3.2.11。

当我启动我的ZF应用程序时,出现以下错误:

Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found (serverSelectionTryOnce set) in /var/www/project/vendor/mongodb/mongodb/src/Collection.php on line 360



这是我的docker-compose:
mongodb:
image: mongo:3.2.11
restart: always
container_name: mongodb
environment:
- MONGO_DATA_DIR=/data/project
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=mongopassword
volumes:
- mongodb-data:/data/project
ports:
- "27017:27017"
command: mongod --smallfiles

这是我的ZF配置:
'caches' => [
'Project\Web\Cache\Sessions' => [
'template' => 'mongodb',
'adapter' => [
'name' => 'Project\Common\Cache\Storage\Adapter\MongoDb',
'options' => [
'server' => getenv('ZF_MONGO_HOST'),
'connection_options' => [
'connect' => true,
'connectTimeoutMS' => 5000,
'fsync' => true,
'readPreference' => 'primaryPreferred',
'replicaSet' => 'set-1',
],
'database' => getenv('ZF_MONGO_DATABASE_NAME'),
'collection' => 'sessions',
'ttl' => 3600,
],
],
],
],

这是我的docker-compose.env:
## MONGO DB ##
ZF_MONGO_HOST=mongodb://my_user:mymongopassword@mongodb/my_db
ZF_MONGO_DATABASE_NAME=my_db

我试过的
*当我连接到mongodb时,它可以工作
*我测试了用户凭据:有效
*当我更改 ZF_MONGO_HOST时,我得到了相同的错误,但是在方括号中,我看到他无法连接到-错误-网址。因此安装似乎没问题。
*搜索〜3小时:所有错误都连接到脱机mongodb服务器...

有任何想法吗?

更新:

我在设置后尝试了bitnami图像:
  mongodb:
image: bitnami/mongodb:3.6.8
restart: always
container_name: mongodb
environment:
- MONGODB_USERNAME=my_user
- MONGODB_PASSWORD=mymongopassword
- MONGODB_DATABASE=my_db
volumes:
- mongodb-data:/data/db-bitnami
ports:
- "27017:27017"

同样的错误。

最佳答案

在docker docker-compose up之后,连接到MongoDB数据库并键入rs.status(),它应该具有member字段,指示它是从属。如果未设置,则需要在mongodb中对其进行定义:

rs.initiate( {
_id : "set-1",
members: [
{ _id: 0, host: "mongodb0.example.net:27017" },
{ _id: 1, host: "mongodb1.example.net:27017" },
{ _id: 2, host: "mongodb2.example.net:27017" }
]
})

在此步骤之后,您的mongodb已被复制并可以使用。为了自动执行此第二部分(配置mongodb),您可以编写一个bash脚本,在docker-compose文件中用作 Entrypoint或使用某些复制的docker图像(例如 bitnami)。

关于php - Zend Framework 2 + docker :MongoDB ConnectionTimeoutException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53744118/

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