目錄
最簡單直接的方式
測試MongoDB docker compose的安裝shell腳本
驗證訪問
最簡單直接的方式
讓虛擬機直接使用宿主機的物理 CPU 功能標志。
-
打開 Proxmox Web UI。
-
選擇你的 VM → 硬件 (Hardware) → CPU → 點擊 編輯 (Edit)。
-
將 CPU 類型改為 host。
-
確認并重啟 VM。
然后進入虛擬機查看
cat /proc/cpuinfo | grep -i avx
注意開放端口/關閉防火墻
測試MongoDB docker compose的安裝shell腳本
#!/bin/bash# 業務庫和賬號參數
user="test"
pass="admin321"
dbport=27017
dbname="aps"
rootuser="root"
rootpass="Test@1225"# 創建目錄
mkdir -p /mnt/diska/mongodb-aps/data
mkdir -p /mnt/diska/mongodb-aps/log
mkdir -p /mnt/diska/mongodb-aps/conf# 修改目錄權限,避免日志寫入報錯
chown -R 999:999 /mnt/diska/mongodb-aps/log
chmod 777 /mnt/diska/mongodb-aps/log# mongod.conf
cat > /mnt/diska/mongodb-aps/conf/mongod.conf <<EOF
storage:dbPath: /data/db
systemLog:destination: filepath: /var/log/mongodb/mongod.loglogAppend: true
net:port: ${dbport}bindIp: 0.0.0.0
security:authorization: enabled
processManagement:fork: false
EOF# docker-compose.yml
cat > /mnt/diska/mongodb-aps/docker-compose.yml <<EOF
version: '3.8'services:mongodb:image: mongo:latestcontainer_name: mongodb-apsrestart: alwaysenvironment:MONGO_INITDB_ROOT_USERNAME: ${rootuser}MONGO_INITDB_ROOT_PASSWORD: ${rootpass}ports:- "${dbport}:27017"volumes:- /mnt/diska/mongodb-aps/data:/data/db- /mnt/diska/mongodb-aps/conf/mongod.conf:/etc/mongod.conf- /mnt/diska/mongodb-aps/log:/var/log/mongodbcommand: ["mongod", "--config", "/etc/mongod.conf"]
EOF# 啟動服務
cd /mnt/diska/mongodb-aps
docker compose down
docker compose up -d# 等待MongoDB容器初始化完成(循環等待端口可用)
echo "等待MongoDB啟動..."
for i in {1..20}
dodocker exec mongodb-aps mongosh admin -u "${rootuser}" -p "${rootpass}" --eval "db.adminCommand('ping')" &>/dev/nullif [ $? -eq 0 ]; thenecho "MongoDB 已啟動!"breakfisleep 2
done# 再次檢查容器是否運行中
if ! docker ps | grep -q mongodb-aps; thenecho "MongoDB容器啟動失敗!請檢查日志。"exit 1
fi# 創建數據庫和業務賬號(冪等,已存在不報錯)
docker exec mongodb-aps mongosh admin -u "${rootuser}" -p "${rootpass}" --eval "
db = db.getSiblingDB('${dbname}');
if (!db.getUser('${user}')) {db.createUser({user: '${user}', pwd: '${pass}', roles:[{role:'dbOwner', db:'${dbname}'}]});
} else {print('用戶已存在');
}
"echo "MongoDB及業務庫初始化完成!"
驗證訪問
docker run --rm -it mongo mongosh "mongodb://test:admin321@$(hostname -i):27017/aps"