前置需求
- 已安裝並設置WSL2。
- 已安裝 Docker Desktop。
- 具體安裝指引,可以參考:
http://kenming.localhost/win10_wsl2_install_docker-desktop/
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 相關資訊。
