docker php mongodb прохождение ссылок на соединение mongodb

Я пытаюсь подключиться к mongodb из PHP 7.

У меня есть контейнер nginx, php-fpm и mongodb.

Я установил драйвер mongodb, используя pecl, и он появляется в phpinfo (), mongodb ver. 1.2.3. Дополнительно я установил mongodb / mongodb с помощью composer.

Я связал свои контейнеры с mongodb (например, --link mongodb_container:mongodb)

Теперь, когда я пытаюсь:

$collection = (new Client('mongodb'))->streamflixmongodb->videos;

Я получил бы ошибку:

Fatal error: Uncaught MongoDB\Driver\Exception\InvalidArgumentException:
Failed to parse MongoDB URI: 'mongodb' in /vendor/mongodb/mongodb/src/Client.php:81 Stack trace:
#0 /vendor/mongodb/mongodb/src/Client.php(81): MongoDB\Driver\Manager->__construct('mongodb', Array, Array)
#1 /var/www/html/test.php(24): MongoDB\Client->__construct('mongodb')
#2 {main} thrown in /vendor/mongodb/mongodb/src/Client.php on line 81

Поскольку соединения должны начинаться с mongodb: //

Кроме того, если я пытаюсь:

$collection = (new Client('mongodb://mongodb:27015'))->streamflixmongodb->videos;

Я получу следующую ошибку:

Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException:
No suitable servers found (`serverSelectionTryOnce` set):
[connection timeout calling ismaster on 'mongodb:27015'] in
/vendor/mongodb/mongodb/src/Collection.php:513 Stack trace: #0
/vendor/mongodb/mongodb/src/Collection.php(513):
MongoDB\Driver\Manager->selectServer(Object(MongoDB\Driver\ReadPreference))
#1 /var/www/html/test.php(27): MongoDB\Collection->find('.mp4')
#2 {main} thrown in /vendor/mongodb/mongodb/src/Collection.php on line 513

Ошибки генерируются, когда я запускаю:

var_dump($collection->find());

Как правильно передавать ссылки на новый mongodb в PHP? Ранее я использовал старые монго с php5, и это было нормально.

мой докер ps -a

93ce6947f2d8        vignatjevs/nginx        "/bin/sh -c 'servi..."   2 days ago          Up 57 seconds              0.0.0.0:8082->80/tcp, 0.0.0.0:32814->443/tcp         streamflix
569307612b50        vignatjevs/php-fpm      "/app-entrypoint.s..."   2 days ago          Up 2 minutes               9000/tcp                                             streamflix-php-fpm
03decea6dfa7        composer                "/docker-entrypoin..."   2 days ago          Exited (0) 2 minutes ago                                                        composer
c01b48fcdda3        jenkins                 "/bin/tini -- /usr..."   3 days ago          Up 21 hours                50000/tcp, 0.0.0.0:49001->8080/tcp                   clever_swartz
d16ace0397be        tutum/mongodb           "mongod --smallfiles"    6 days ago          Up 21 hours                0.0.0.0:27017->27017/tcp, 0.0.0.0:28017->28017/tcp   mongodb_streamflix
72e7bca2e2b7        phpmyadmin/phpmyadmin   "/run.sh phpmyadmin"     12 days ago         Up 21 hours                0.0.0.0:8080->80/tcp                                 streamflix_admin
a0988be5018a        centurylink/mysql       "/usr/local/bin/run"     12 days ago         Up 21 hours                0.0.0.0:3306->3306/tcp, 0.0.0.0:6603->3306/tcp       streamflix-mysql-server

0

Решение

Нашел решение. Проблема заключалась в том, что я поместил НЕКОТОРЫЕ из моих контейнеров в сеть, давая такой параметр, как --network app-tier

docker run -d --name streamflix-php-fpm --network app-tier -v
/Volumes/Data/MSc\ Stuff/DEVOPS/streamflix-docker/php-fpm:/bitnami/php-fpm
-v /Volumes/Data/MSc\ Stuff/DEVOPS/streamflix-docker/streamflix:/var/www/html
--link streamflix-mysql-server:mysqldb
--link mongodb_streamflix:mongodb
--link videoserv:videoserver   vignatjevs/php-fpm

Я не могу поверить, что провел большую часть дня, потому что не мог определить это: D

Очевидно, что если я создал сеть для некоторых контейнеров, я должен был поместить их всех в нее, или удалить --network Параматер полностью из любого места, чтобы сделать его последовательным.

Надеюсь, это поможет кому-то, кто застрянет с той же проблемой.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector