在Windows開發環境和Linux生產環境,執行相同的docker-compose.yml檔案,存在映象版本不一致的情況。

未来的羁绊發表於2024-07-19

版本不同會導致很多問題,我遇到的則是,在初始化資料庫時,在開發環境可以正常執行;但是生產環境的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] -> 容器名


生產環境:

開發環境:




相關文章