Docker 安裝 MongoDB 8.x 與 Mongo Express

前置需求

Docker Compose 配置與說明

Docker Compose 設定檔

services:
  mongo:
    image: mongo:8.0.6
    container_name: mongodb
    restart: always
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
    volumes:
      - mongo-data:/data/db
      - mongo-config:/data/configdb
    # 確保容器能被發現
    networks:
      - default
  mongo-express:
    image: mongo-express:latest
    container_name: mongo-express
    restart: always
    ports:
      - "8081:8081"
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=root
      - ME_CONFIG_MONGODB_ADMINPASSWORD=password
      - ME_CONFIG_MONGODB_SERVER=mongo
      - ME_CONFIG_MONGODB_AUTH_DATABASE=admin
      - ME_CONFIG_MONGODB_URL=mongodb://root:password@mongo:27017/admin
      # 添加基本認證
      # - ME_CONFIG_BASICAUTH_USERNAME=admin
      # - ME_CONFIG_BASICAUTH_PASSWORD=pass
      # 明確禁用基本認證
      - ME_CONFIG_BASICAUTH=false
    depends_on:
      - mongo
    networks:
      - default
volumes:
  mongo-data:
    driver: local
  mongo-config:
    driver: local
networks:
  default:
    external: true
    name: nginx-proxy

配置摘要說明

MongoDB Service

  • 映像檔: mongo:8.0.6
  • 容器名稱: mongodb
  • 重啟策略: 總是自動重啟 (always)
  • 端口映射: 27017→27017 (主機→容器)
  • 認證資訊:
    • 管理員用戶名: root
    • 管理員密碼: password
  • 資料持久化:
    • 資料庫檔案: mongo-data 卷 (volume) 掛載 (mount) 到 /data/db
    • 配置檔案: mongo-config 卷(volume) 掛載 (mount) 到 /data/configdb
  • 網路: 連接到外部 nginx-proxy 網路

Mongo Express Service

  • 映像檔: mongo-express:latest
  • 容器名稱: mongo-express
  • 重啟策略: 總是自動重啟
  • 端口映射: 8081→8081 (主機→容器)
  • MongoDB 連接配置:
    • 管理員用戶名: root
    • 管理員密碼: password
    • MongoDB 伺服器: mongo
    • 認證資料庫: admin
    • 完整連接字串: mongodb://root:password@mongo:27017/admin
  • 網頁介面認證: 已禁用 (ME_CONFIG_BASICAUTH=false)
  • 依賴服務: 必須在 mongo 服務啟動後才啟動網路: 連接到外部 nginx-proxy 網路

儲存卷

  • mongo-data: 本地驅動卷,用於持久化 MongoDB 資料
  • mongo-config: 本地驅動卷,用於持久化 MongoDB 配置

網路配置

  • 使用外部網路: nginx-proxy
  • 外部網路用途: 允許容器與其他使用相同網路的服務進行通信

重點特性

  • MongoDB 設定了安全認證
  • Mongo Express 網頁介面無需登入 (開發環境設定)
  • 所有資料持久化儲存
  • 使用預先建立的外部網路進行服務間通信
  • 兩個服務的端口都映射到主機,可直接訪問

執行與啟動容器

Shell 模式下,切換至 docker-compose.yml 所在目錄,執行:

$ docker-compose up -d

     該指令會在背景啟動 MongoDB 和 Mongo Express 容器。

     可以使用下列指定確認容器運行狀態:

$ docker-compose ps

     應該能看到這兩個容器已處在正常執行 (Up) 的狀態。

停止與移除容器

如果需要停止或移除容器,可以選擇下列指令 (擇一) 執行。

# 停止容器
$ docker-compose stop
# 停止並移除容器
$ docker-compose down
# 如果要同時刪除資料卷
$ docker-compose down -v

連接至 Docker 容器的 MongoDB

使用 MongoDB Shell

Shell 模式下,進入 mongodb 容器 | 使用 bash。

$ docker exec -it mongodb mongosh --username root --password password

使用 Host 本機端瀏覽器登入

在瀏覽器中開啟:http://localhost:8081 ,即會自動登入並顯示 MongoDB 相關資訊。

留下第一條留言