当前位置: 首页 > news >正文

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

目录

最简单直接的方式

测试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: 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"

http://www.lryc.cn/news/596210.html

相关文章:

  • Leetcode力扣解题记录--第73题(矩阵置零)
  • Leetcode题解:209长度最小的子数组,掌握滑动窗口从此开始!!!
  • Vue中最简单的PDF引入方法及优缺点分析
  • Gradio, Streamlit, Dash:AI应用开发的效率之选
  • 配置https ssl证书生成
  • 拓展三字棋
  • ansible 批量 scp 和 load 镜像
  • 2025 年 7 月 21 日 AI 日报
  • 位运算符的妙用
  • 消息推送功能设计指南:精准触达与用户体验的平衡之道
  • OpenCV 零基础到项目实战 | DAY 1:图像基础与核心操作
  • Qt文件操作:读写文件的各种方法
  • 模运算常见定律
  • Java学习----Redis集群
  • Custom SRP - Draw Calls
  • Linux异常与信号处理
  • 11.【C语言学习笔记】指针(三)(回调函数、qsort排序函数、sizeof关键字和strlen函数)
  • Mixed Content错误:“mixed block“ 问题
  • 西门子 S7-1500分布式 I/O通信 :PROFINET IO 与 PROFIBUS DP核心技术详解(上)
  • 知识库搭建之Meilisearch‘s 搜索引擎-创建搜索引擎项目 测评-东方仙盟测评师
  • 【Godot4】状态栏组件StatusBar
  • python中 tqdm ,itertuples 是什么
  • RabbitMQ--批量处理
  • halcon手眼标定z方向实操矫正
  • VUE 中父级组件使用JSON.stringify 序列化子组件传递循环引用错误
  • 机器人氩弧焊保护气降成本的方法
  • Apache Ignite 的 SQL 功能和分布式查询机制
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ImageCarousel(图片轮播组件)
  • 深度学习篇---车道线循迹
  • FPGA自学——存储器模型