big*_*055 6 mongodb docker docker-compose
我的 docker-compose.yml
mongo:
image: mongo
volumes:
- ./mongo:/data/db
ports:
- 27017:27017
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: pass
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: pass
ME_CONFIG_MONGODB_URL: mongodb://root:pass@mongo:27017/
Run Code Online (Sandbox Code Playgroud)
当我运行时,docker-compose up它会记录以下错误
对于 mongo 服务: UnhandledPromiseRejectionWarning:MongoNetworkError:首次连接时无法连接到服务器 [mongo:27017] [MongoError:身份验证失败。
对于 mongo-express 服务: “error”:“UserNotFound:无法找到数据库“admin”的用户“root”
我尝试添加?authSource=admin到 ME_CONFIG_MONGODB_URL 但错误仍然存在。
小智 0
我认为问题出在启动mongodb时没有运行命令--auth。mongodb 映像默认情况下不运行--auth,必须使用该command标志覆盖。
与您的示例类似,docker-compose 使用 Mongodb 的环境变量来创建 init 用户,因此启用身份验证应该可以解决身份验证问题。
mongodb:
hostname: your_hostname
image: mongo:latest
volumes:
- ./mongo:/data/db
ports:
- 27017:27017
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGODB_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGODB_PASSWORD}
- MONGO_INITDB_DATABASE=${DATABASE}
command: mongod --auth --port 27017
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1201 次 |
| 最近记录: |