Aur*_*ien 5 mongodb node.js docker
我在使用 docker 和 NodeJS 驱动程序连接到 mongodb 时遇到一些问题。
\n这是我的 docker-compose.yml 文件:
\nversion: "3.3"\nservices:\n mongodb:\n image: mongo:4.0.20\n ports:\n - 27017:27017\n command: mongod --replSet rs0\n deploy:\n replicas: 1\n restart_policy:\n condition: "on-failure"\nRun Code Online (Sandbox Code Playgroud)\n我启动我的服务\ndocker stack deploy -c ./docker-compose.yml --with-registry-auth XXX
然后,当我确定 mongo 启动良好时,我运行:
\ndocker exec $(docker ps -q -f name=mongodb) mongo local --eval "rs.initiate()"\n初始化复制集。
这是我的nodejs测试文件:
\nconst MongoClient = require(\'mongodb\');\n\n(async () =>\xc2\xa0{\n let db;\n try {\n db = (await MongoClient(\n \'mongodb://localhost:27017/qos\',\n {\n useNewUrlParser: true,\n useUnifiedTopology: true\n }\n )).db();\n console.log(\'connected\');\n } catch (error) {\n console.trace(error)\n }\n})()\nRun Code Online (Sandbox Code Playgroud)\n但是当我运行 test.js 文件时,我看到:
\nTrace: MongoServerSelectionError: getaddrinfo ENOTFOUND 272b05abb632\n at Timeout._onTimeout (node_modules/mongodb/lib/core/sdam/topology.js:438:30)\n at listOnTimeout (internal/timers.js:554:17)\n at processTimers (internal/timers.js:497:7) {\n reason: TopologyDescription {\n type: \'ReplicaSetNoPrimary\',\n setName: \'rs0\',\n maxSetVersion: 1,\n maxElectionId: 7fffffff0000000000000001,\n servers: Map { \'bcc9e46ea248:27017\' => [ServerDescription] },\n stale: false,\n compatible: true,\n compatibilityError: null,\n logicalSessionTimeoutMinutes: null,\n heartbeatFrequencyMS: 10000,\n localThresholdMS: 15,\n commonWireVersion: 7\n }\n}\n at test.js:15:13\nRun Code Online (Sandbox Code Playgroud)\n我检查这272b05abb632是正确的容器 ID,\n并且在我的 docker 进程中我看到:
2020-11-10T16:34:49.019360315Z XXX_mongodb.1.awsb46tji1lg@docker-desktop | 2020-11-10T16:34:49.018+0000 I NETWORK [listener] connection accepted from 10.0.0.2:49082 #4 (2 connections now open)\n2020-11-10T16:34:49.027564962Z XXX_mongodb.1.awsb46tji1lg@docker-desktop | 2020-11-10T16:34:49.027+0000 I NETWORK [conn4] received client metadata from 10.0.0.2:49082 conn4: { driver: { name: "nodejs", version: "3.6.3" }, os: { type: "Darwin", name: "darwin", architecture: "x64", version: "19.6.0" }, platform: "\'Node.js v12.19.0, LE (unified)" }\n2020-11-10T16:34:49.033185739Z XXX_mongodb.1.awsb46tji1lg@docker-desktop | 2020-11-10T16:34:49.032+0000 I NETWORK [conn4] end connection 10.0.0.2:49082 (1 connection now open)\nRun Code Online (Sandbox Code Playgroud)\n我不明白为什么 useUnifiedTopology 不起作用:(
\n我请求你的帮助!
\n我还尝试通过 docker-compose 在我的容器中添加 mongod.conf,但它也不起作用:
\nversion: "3.3"\nservices:\n mongodb:\n image: mongo:4.0.20\n ports:\n - 27017:27017\n command: mongod --config /etc/mongod.conf \n volumes:\n - "./mongod.conf:/etc/mongod.conf"\n deploy:\n replicas: 1\n restart_policy:\n condition: "on-failure"\nRun Code Online (Sandbox Code Playgroud)\nsecurity:\n authorization: \'enabled\'\n\nnet:\n port: 27017\n bindIp: 0.0.0.0 #default value is 127.0.0.1\n\nreplication:\n replSetName: rs0\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1962 次 |
| 最近记录: |