我正在尝试将在 docker 容器中运行的 mongodb 公开以便从外部访问。
我发现它应该能够使用 docker compose 或 mongod.conf 文件在那里设置主机绑定,但是由于我使用官方 mongodb docker 镜像,所以我没有进行组合,而且我也找不到 conf 文件。
以下是我所做的以及迄今为止尝试过的方法:
- 创建了一个网络
docker 网络创建 my-mongo-cluster
- 运行 3 个 mongo db 实例
docker run --name mongo-node1 -d --net my-mongo-cluster mongo --replSet "rs0" docker run --name mongo-node2 -d --net my-mongo-cluster mongo --replSet "rs0" docker run --name mongo-node3 -d --net my-mongo-cluster mongo --replSet "rs0"
执行第一个
docker exec -it mongo-node1 mongo
设置副本集的配置
配置 = { “_id”:“rs0”, “成员”:[{ “_id”:0,“主机”:“mongo-node1:27017” },{ “_id”:1,“主机”:“mongo-node2:27017” },{ “_id”:2,“主机”:“mongo-node3:27017” } ] }
rs.initiate(配置) rs.初始化
创建了管理员用户
使用管理员 db.createUser( { 用户:“admin”, 密码:“admin”, 角色:[ { 角色:“userAdminAnyDatabase”, 数据库:“admin” },>“readWriteAnyDatabase” ] } )
我尝试使用以下语句运行容器:
--expose=27017
--auth
--entrypoint 'mongod --bind_ip_all'
-> 导致错误。
它在 AWS 中运行,并且 27017 的入站规则设置正确。
答案永远是:
couldn't connect to server ec2-52-59-191-1.eu-central-1.compute.amazonaws.com:27017, connection attempt failed: SocketException: Error connecting to ec2-52-59-191-1.eu-central-1.compute.amazonaws.com:27017 (52.59.191.1:27017) :: caused by :: No connection could be made because the target machine actively refused it. :