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 up

services:
  my-mongodb:
    image: mongo:6.0.6-jammy
    container_name: my-mongodb
    restart: always
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_DATABASE=test
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin123456
    volumes:
      # seeding scripts
      - ./mongo-entrypoint:/docker-entrypoint-initdb.d
      # named volumes
      - ./db:/data/db
     #- mongoconfig:/data/configdb
    networks:
      - mongo_net

  my-mongoclient:
    # build will get tagged with 'image'
    build: ./my-mongoclient
    image: fabianlee/my-mongoclient:3.9
    container_name: my-mongoclient
    restart: always
    environment:
      - MONGO_SERVER=my-mongodb
      - MONGO_INITDB_DATABASE=test
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin123456
    networks:
      - mongo_net
    depends_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: testUaser
      password: testUser123456
      database: test
      host: 192.168.20.151
      port: 27017

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值