Problème de communication entre symfony et mongodb avec docker

Par nasser@milango, il y a 3 ans


J'ai récupéré un projet symfony3.4, je veux le lancer localement, le projet est construit avec un docker, les containers docker sont bien lancés et fonctionnent bien (docker-compose.yml). J'ai bien configuré le fichier de paramètres (parameters.yml). dans mongodb j'ai importé les données du projet avec succès. je me suis connecté à mongodb pour créer les utilisateurs pour l'authentification. j'ai un problème de connexion dans symfony et mongodb. quand je fais une requête avec doctrine, j'ai l'erreur suivante :

(4/4) MongoConnectionException No servers yet eligible for rescan (2/4) MongoConnectionException No suitable servers found (`serverSelectionTryOnce` set): \[connection refused calling hello on 'localhost:27017'\]

paramaters.yml

mongodb_server: "localhost:27017" mongodb_database: 'fleur' mongodb_user: 'fleur' mongodb_password: 'fleur' mongodb_authsource: 'admin'

doctrine_mongodb.yml

doctrine_mongodb: connections: default: server: '%mongodb_server%' options: db: '%mongodb_database%' username: '%mongodb_user%' password: '%mongodb_password%' authSource: '%mongodb_authsource%' default_database: '%mongodb_database%' document_managers: default: auto_mapping: true

docker-compose.yml

version: '2' services: front: image: nginx ports: - "8080:8080" - "443:443" links: - "engine:engine" volumes: - ".:/home/docker:ro" - "./docker/front:/etc/nginx/conf.d:rw" networks: default: aliases: - local.marchedici.fr #to solve wkhtml2pdf loopback query engine: build: ./docker/engine/ ports : - "9000:9000" #- "9010:9010" volumes: - ".:/home/docker:rw" - "/usr/local/bin/composer:/var/www/.composer:rw" - "./docker/engine/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro" - "./docker/engine/xdebug-disabled.ini:/usr/local/etc/php/conf.d/custom-xdebug.ini:ro" #- "./docker/engine/xdebug-enabled.ini:/usr/local/etc/php/conf.d/custom-xdebug.ini:ro" #- "./docker/engine/xdebug-enabled-wsl2.ini:/usr/local/etc/php/conf.d/custom-xdebug.ini:ro" - "./docker/engine/supervisor.conf:/etc/supervisor.conf:ro" links: - "elastic:elastic" - "redis:redis" - "mongo:mongo" - "rabbitmq:rabbitmq" working_dir: "/home/docker" #extra_hosts: # - "docker.host:${WSL_IP}" mongo: image: mongo:4.4 ports: - "27017:27017" #environment: # - MONGO_INITDB_ROOT_USERNAME=root # - MONGO_INITDB_ROOT_PASSWORD=root expose: - 27017 volumes: - "./data/mongodb44dir:/data/db" - "./data/log:/var/log/mongodb/" - "./data/dumpmarchedici:/home/dumpmongo:rw" command: mongod elastic: environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - xpack.security.enabled=false - xpack.monitoring.enabled=false - xpack.graph.enabled=false - xpack.watcher.enabled=false - "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" ulimits: memlock: soft: -1 hard: -1 volumes: - "./data/elasticdir:/usr/share/elasticsearch/data" ports: - 9200:9200 build: ./docker/elastic/ redis: image: redis:3.2 ports: - "6379:6379" varnish: image: varnish:6.4 ports: - "80:80" links: - front - engine volumes: - "./docker/varnish:/etc/varnish" rabbitmq: image: rabbitmq:3.8-management hostname: rabbitmq ports: - 10500:15672 environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=admin

J'ai essayé de changer l'hôte 127.0.0.1, localhost, j'ai créé un hôte personnalisé local.site.fr. j'ai téléchargé compass pour tester la connexion à la base de données mongodb, je peux me connecter avec succès, je me suis connecté à mon conteneur docker mongo pour accéder à mongodb depuis la ligne de commande avec succès. je ne comprends pas d'où vient le problème. dans le journal mongodb je n'ai rien. dans le journal php j'ai l'erreur suivante :

[2023-01-17 11:56:45] request.CRITICAL: Exception thrown when handling an exception (MongoConnectionException: No servers yet eligible for rescan at /home/docker/vendor/alcaeus/mongo-php-adapter/lib/Alcaeus/MongoDbAdapter/ExceptionConverter.php line 92) {"exception":"[object] (MongoConnectionException(code: 13053): No servers yet eligible for rescan at /home/docker/vendor/alcaeus/mongo-php-adapter/lib/Alcaeus/MongoDbAdapter/ExceptionConverter.php:92, MongoDB\\Driver\\Exception\\ConnectionTimeoutException(code: 13053): No servers yet eligible for rescan at /home/docker/vendor/mongodb/mongodb/src/functions.php:431)"} {"file":"/home/docker/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php","line":101,"class":"Symfony\\Component\\HttpKernel\\EventListener\\ExceptionListener","function":"logException","memory_peak_usage":"2 MB","memory_usage":"2 MB","url":"/","ip":"172.18.0.1","http_method":"GET","server":"local.site.fr","referrer":null}

2 réponses

gillesr, il y a 3 ans

Bonjour,
dans ton parameters.yml, essaie ça :

mongodb_server: "mongo:27017"
nasser@milango, il y a 3 ans

Merci beaucoup gillesr.