在Windows开发环境和Linux生产环境,运行相同的docker-compose.yml文件,存在镜像版本不一致的情况。
版本不同会导致很多问题,我遇到的则是,在初始化数据库时,在开发环境可以正常执行;但是生产环境的mongodb数据库版本过低,导致无法成功执行数据库的初始化脚本。
运行的 docker-compose.yml
文件的部分内容如下:
# docker-compose.yml
....
app-mongodb:
image: mongo:latest
container_name: app-mongodb
restart: unless-stopped
# 开启用户名密码验证
command: mongod --auth
# 提供伪终端
# tty: true
environment:
TZ: Asia/Shanghai # 指定时区
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
MONGO_INITDB_DATABASE: logo
# 用户名:mongodb,密码:mongodb2024,在mongo-init.js初始化脚本中创建
# MONGO_INITDB_USERNAME: mongodb
# MONGO_INITDB_PASSWORD: mongodb2024
ports:
- 27017:27017
volumes:
# - ./db/mongodb/init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh
- ./db/mongodb/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
# - ./db/mongodb/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
- ./db/mongodb/db:/data/db
- ./db/mongodb/mongoconfig:/data/configdb
....
问题原因:
指定的镜像版本不严谨 image: mongo:latest
这个latest版本会导致服务器镜像为5.0.5,但是开发环境却是7.0.11;
解决方案:
将版本指定为具体版本号,如: image: mongo:7.0.11
,这样就不会出现版本不一致的情况了~
如何查看Mongodb的版本?
方法一:使用Navicat查看
使用Navicat查看Mongodb的数据库版本:
方法二:docker命令
使用docker命令进入mongodb容器中查看数据库版本:
# 进入docker容器
sudo docker exec -it 1cccbe9acd65 bash
# mongosh连接到Mongo实例
mongosh
# 查看版本信息
db.version()
使用Navicat查看Mongodb的数据库版本:
Redis如何查看版本信息
使用docker命令进入redis容器中查看版本:
执行命令:
# 进入app-redis容器,并查看版本信息
sudo docker exec -it [app-redis] redis-server -v
说明: [app-redis] -> 容器名
生产环境:
开发环境: