docker-compose 安装mongoDB 6.0.6
docker-compose 安装mongoDB 6.0.6
环境
- 系统环境:ubuntu22.04
- docker版本: 23.0.1
- docker-compose版本:v2.17.0
docker-compose.yml
version: '3.6'
# Deploys MongoDB with customization scripts and container with Mongo client
# https://fabianlee.org/2018/05/20/docker-using-docker-compose-to-link-a-mongodb-server-and-client/
#
# usage:
# sudo docker-compose build
# sudo docker-compose upservices:my-mongodb:image: mongo:6.0.6-jammycontainer_name: my-mongodbrestart: alwaysports:- 27017:27017environment:- MONGO_INITDB_DATABASE=test- MONGO_INITDB_ROOT_USERNAME=admin- MONGO_INITDB_ROOT_PASSWORD=admin123456volumes:# seeding scripts- ./mongo-entrypoint:/docker-entrypoint-initdb.d# named volumes- ./db:/data/db#- mongoconfig:/data/configdbnetworks:- mongo_netmy-mongoclient:# build will get tagged with 'image'build: ./my-mongoclientimage: fabianlee/my-mongoclient:3.9container_name: my-mongoclientrestart: alwaysenvironment:- MONGO_SERVER=my-mongodb- MONGO_INITDB_DATABASE=test- MONGO_INITDB_ROOT_USERNAME=admin- MONGO_INITDB_ROOT_PASSWORD=admin123456networks:- mongo_netdepends_on:- my-mongodb#volumes:# default dir on Ubuntu: /var/lib/docker/volumes# mongodb2: /usr/local/docker/mongodb/db# mongoconfig:networks:mongo_net:driver: bridge
运行
docker-compose up -d
springBoot连接使用
不能直接使用docker-compose.yml配置的MONGO_INITDB_ROOT_USERNAME连接
mongoDB中不能直接使用ROOT_USERNAME里配置的用户来读取数据库,需要为使用的库创建连接用户,如果使用MONGO_INITDB_ROOT_USERNAME 连接,会报如下错误:
Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 192.168.20.151:27017. The full response is {"ok": 0.0, "errmsg": "Authentication failed.", "code": 18, "codeName": "AuthenticationFailed"}at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:198)at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:413)at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:337)at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:101)at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:45)at com.mongodb.internal.connection.SaslAuthenticator.sendSaslStart(SaslAuthenticator.java:230)at com.mongodb.internal.connection.SaslAuthenticator.getNextSaslResponse(SaslAuthenticator.java:137)... 108 more
为数据库创建连接用户
- 进入容器
docker exec -it my-mongodb bash
- 切换用户
mongosh -u admin
- 指定使用test数据库
use test
- 为test库创建用户,以及用户角色,配置文件里就可以使用新创的这个用户连接mongoDB
db.createUser({user: "testUser", pwd: "testUser123456", roles : [{role: "readWrite", db: "test"}]});
springBoot的mongoDB连接配置
# 配置mongodb地址
spring:data:mongodb:username: testUaserpassword: testUser123456database: testhost: 192.168.20.151port: 27017
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
