目录
测试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: file
path: /var/log/mongodb/mongod.log
logAppend: 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:latest
container_name: mongodb-aps
restart: always
environment:
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/mongodb
command: ["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}
do
docker exec mongodb-aps mongosh admin -u "${rootuser}" -p "${rootpass}" --eval "db.adminCommand('ping')" &>/dev/null
if [ $? -eq 0 ]; then
echo "MongoDB 已启动!"
break
fi
sleep 2
done
# 再次检查容器是否运行中
if ! docker ps | grep -q mongodb-aps; then
echo "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"