mongodb - 尝试使用 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
解决方案
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 官方文档以获取更多详细信息。
推荐阅读
- r - R Plotly在add_text中旋转文本
- r - 通过 Github 下载 R 包
- c++ - 为什么C++标准库总是通过std::initializer_list
按价值而不是按参考? - firebase - 使用自定义令牌发布到 Firestore 导致请求具有无效的身份验证凭据。预期...有效的身份验证凭据
- excel - 编译错误参数仅在 Mac 上不是可选的
- javascript - VueJs 仅将数组推入数组值
- javascript - 为 v-for 中使用的对象添加新属性
- kubernetes - 如何使用 go-client 在 Kubernetes 中重新启动部署
- swiftui - 在 SwiftUI 中从另一个视图设置 @State 变量
- c# - 将 CString 数组从 MFC c++ dll 返回到 C# 程序