首页 > 解决方案 > 尝试使用 docker 运行 mongo 命令时无法连接到服务器 127.0.0.1:27017

问题描述

我正在尝试使用此命令在 docker 容器上运行 mongo 脚本 docker run --rm -it --volume "$(pwd):/scripts" mongo:latest mongo /scripts/${SCRIPT_FILE_NAME},但我不断收到此错误:

MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:362:17
@(connect):2:6
exception: connect failed
exiting with code 1

标签: mongodbdockershell

解决方案


mongo /scripts/${SCRIPT_FILE_NAME}您共享的 docker run 命令会在容器启动时立即尝试显式执行该命令。
在那个时间点,mongodb 守护进程还没有准备好接受连接。

与其尝试手动初始化,不如利用内置的 mongo 机制来发现脚本/docker-entrypoint-initdb.d并在数据库运行时执行它们。

当第一次启动 mongo 容器时,它将执行 /docker-entrypoint-initdb.d 中的扩展名为 .sh 和 .js 的文件。文件将按字母顺序执行。
.js文件将由 mongo 使用 MONGO_INITDB_DATABASE 变量指定的数据库(如果存在)执行,否则进行测试。您还可以在 .js 脚本中切换数据库。

查看 mongo image 官方文档以获取更多详细信息。


推荐阅读