我设置了 docker compose 以在本地测试我的应用程序,但该应用程序似乎无法访问 mongo 实例,即使我可以在 Studio 3T 上访问。
这是我的 docker-compose 文件的样子:
services:
web:
image: php-app:latest
ports:
- '80:80'
depends_on:
- db
networks:
- code-network
db:
container_name: mongodb_4.4
image: mongo:4.4
environment:
MONGO_INITDB_ROOT_USERNAME: demo
MONGO_INITDB_ROOT_PASSWORD: secret
ports:
- '27017:27017'
networks:
- code-network
volumes:
- mongodb_data_container:/data/db
volumes:
mongodb_data_container: {}
networks:
code-network:
driver: bridge
这是显示在 docker 控制台中的内容:
PHP Fatal error: Uncaught MongoDB\\Driver\\Exception\\ConnectionTimeoutException: No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling ismaster on '127.0.0.1:27017'] in /var/www/html/vendor/mongodb/mongodb/src/functions.php:431
Stack trace:
#0 /var/www/html/vendor/mongodb/mongodb/src/functions.php(431): MongoDB\\Driver\\Manager->selectServer(Object(MongoDB\\Driver\\ReadPreference))
#1 /var/www/html/vendor/mongodb/mongodb/src/Collection.php(230): MongoDB\\select_server(Object(MongoDB\\Driver\\Manager), Array)
#2 /var/www/html/index.php(12): MongoDB\\Collection->aggregate(Array)
#3 {main}\n thrown in /var/www/html/vendor/mongodb/mongodb/src/functions.php on line 431
我尝试调整我的 php 代码以使用 localhost 和 127.0.0.1 进行连接,但都没有奏效。
答案 0 :(得分:1)
看来您还没有配置 MongoDB 客户端,默认 DSN 是 mongodb://127.0.0.1/
(本地主机),在您的情况下应该是 mongodb://db/
(您定义的数据库服务)。< /p>
阅读有关 MongoDB 客户端构造函数的更多信息: