Mongodb 不能';尝试使用docker运行mongo命令时,请不要连接到服务器127.0.0.1:27017

Mongodb 不能';尝试使用docker运行mongo命令时,请不要连接到服务器127.0.0.1:27017,mongodb,docker,shell,Mongodb,Docker,Shell,我正在尝试使用以下命令在docker容器上运行mongo脚本 docker run--rm-it--volume“$(pwd):/scripts”mongo:latest mongo/scripts/${SCRIPT\u FILE\u NAME},我一直收到这个错误: MongoDB shell version v4.4.0 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=m

我正在尝试使用以下命令在docker容器上运行mongo脚本
docker run--rm-it--volume“$(pwd):/scripts”mongo:latest mongo/scripts/${SCRIPT\u FILE\u 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

您共享的docker run命令尝试在容器启动时立即显式执行
mongo/scripts/${SCRIPT\u FILE\u NAME}
命令。
此时,mongodb守护进程还没有准备好接受连接

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

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


有关更多详细信息,请查看mongo image official。

我认为这就是问题所在,但根据此答案()此命令也应该有效。“如果它对他有效,那么我的机器上会发生其他事情。”亚辛曼苏尔命令很好。再说一遍:你执行得太快了。当容器启动时,mongo db需要几秒钟才能可用。当mongo DB尚未运行时,将执行
mongo/scripts/${SCRIPT\u FILE\u NAME}
命令。至于您共享的答案,我非常确定第一个命令(
docker run-it-p 28000:27017--name mongoContainer mongo:latest mongo
)失败,错误与您的类似。自己做测试。然后,执行第二个测试:启动一个没有参数的mongo容器,然后使用该示例中的第二个命令进行尝试,它将正常工作