如何在同一Docker容器中运行NodeJS与MongoDB?构建报错求解
解决同一容器中安装Node.js与MongoDB的报错问题
报错原因
node:16镜像基于Debian Bullseye发行版,系统默认apt软件源中没有名为mongodb的包,官方MongoDB包的名称为mongodb-org,且需要手动添加官方源才能完成安装。
修改后的Dockerfile
FROM node:16 WORKDIR /usr/src/app # 添加MongoDB官方源并安装对应包 RUN apt-get update && apt-get install -y gnupg curl RUN curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor RUN echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list RUN apt-get update && apt-get install -y mongodb-org # 安装Node.js项目依赖 COPY package.json ./ RUN npm install # 复制应用代码文件 COPY server.js public/ ./ # 暴露服务端口 EXPOSE 3000 EXPOSE 27017 # 后台启动MongoDB并运行Node服务 CMD bash -c "mongod --fork --logpath /var/log/mongodb.log && node server.js"
关键细节说明
- 选择MongoDB 6.0版本适配Debian Bullseye系统,若需其他版本可替换源配置中的版本号
- 使用
mongod --fork让MongoDB后台运行,避免阻塞容器启动流程 - server.js中的连接地址可保持
mongodb://127.0.0.1:27017,同一容器内可直接通过本地回环地址访问MongoDB
内容的提问来源于stack exchange,提问作者Flama
相关产品推荐
相关产品推荐

