如何创建一个既运行 NodeJS 服务器又启动 mongodb 的 Dockerfile?全部在同一个容器中

问题描述 投票:0回答:1

我需要能够在同一个容器中运行:我的nodejs server.js 和 mongodb。

我知道可以使用 docker-compose 或两个单独的容器来实现此目的,但这不是这里的选择。我需要在同一个容器上运行这两个服务。

我的 Dockerfile 是这样的:

FROM node:16
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y mongodb
COPY package.json ./
RUN npm install
COPY server.js public/ ./
EXPOSE 3000
EXPOSE 27017
CMD service mongodb start && node server.js

然后在某个时候我的 server.js 需要像这样调用 mongodb:

const uri = 'mongodb://172.0.0.1:27017';

但是,当我尝试构建容器时,我得到:

E: Package 'mongodb' has no installation candidate
node.js mongodb docker dockerfile
1个回答
0
投票

我不知道你为什么要这样做,你也可以创建两个不同的 Dockerfile,但无论如何。

FROM node:16

# Install MongoDB
RUN apt-get update && \
    apt-get install -y wget gnupg && \
    wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | apt-key add - && \
    echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | tee /etc/apt/sources.list.d/mongodb-org-5.0.list && \
    apt-get update && \
    apt-get install -y mongodb-org

WORKDIR /usr/src/app

COPY package.json ./
RUN npm install

COPY server.js public/ ./

EXPOSE 3000
EXPOSE 27017

CMD service mongod start && node server.js
const uri = 'mongodb://localhost:27017';
© www.soinside.com 2019 - 2024. All rights reserved.