proxmox 解决docker容器MongoDB创建报错MongoDB 5.0+ requires a CPU with AVX support

目录

最简单直接的方式

[测试MongoDB docker compose的安装shell脚本](#测试MongoDB docker compose的安装shell脚本)

验证访问


最简单直接的方式

让虚拟机直接使用宿主机的物理 CPU 功能标志。

  1. 打开 Proxmox Web UI。

  2. 选择你的 VM → 硬件 (Hardware)CPU → 点击 编辑 (Edit)

  3. 将 CPU 类型改为 host

  4. 确认并重启 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"
相关推荐
酷可达拉斯25 分钟前
自动化运维-Ansible任务控制与流程控制
运维·自动化·ansible
HiDev_25 分钟前
【非标自动化】2、认识元器件(电机保护器)
运维·自动化
heimeiyingwang1 小时前
【架构实战】Kubernetes故障排查全景图:从Pod异常到集群雪崩的诊断手册
容器·架构·kubernetes
骇客野人1 小时前
Docker Compose 部署多个独立 Jar 服务完整实操步骤
docker·容器·jar
AAA@峥1 小时前
K8s 资源管控:ResourceQuota 与 LimitRange 机制详解与实战
云原生·容器·kubernetes
承渊政道2 小时前
KES专业技能包发布:覆盖数据库开发、迁移与运维全流程
运维·数据库·gitee·数据库开发·金仓数据库
笨鸟先飞,勤能补拙2 小时前
Web 服务器与计算机网络全景原理
运维·服务器·前端·网络·人工智能·计算机网络·web安全
daoihfoaf2 小时前
太原助听器品质甄选
容器
caimouse2 小时前
ReactOS 图形系统分析(3):显示驱动 DDI framebuf.dll
linux·运维·网络
跨境小彭2 小时前
Temu运营优化方案:活动库存自动化管控,解决断流、超卖与权重下跌问题
大数据·运维·人工智能·自动化·跨境电商·temu·temu电商运营