相关推荐recommended
docker安装nodejs,并更改为淘宝源
作者:mmseoamin日期:2024-01-19

拉取官方 Node.js 镜像

docker pull node:latest

创建 Dockerfile,并更改 NPM 下载源为淘宝源,设置为全局持久化

# 使用最新版本的Node.js作为基础镜像
FROM node:latest
# 设置工作目录为/app
WORKDIR /app
# 更改 NPM 下载源为淘宝源,并设置为全局持久化
RUN npm config set -g registry https://registry.npm.taobao.org
# 将当前目录中的package.json和package-lock.json复制到容器中
COPY package*.json ./
# 安装依赖项
RUN npm install
# 将当前目录中的所有文件复制到容器中
COPY . .
# 暴露端口
EXPOSE 3000
# 启动应用程序
CMD ["npm", "start"]

构建自定义镜像(仅当使用了 Dockerfile 时)

在包含 Dockerfile 的项目根目录下执行构建命令,注意最后的 小数点:

docker build -t my-node-app .

运行容器并挂载本地目录

假设你的 Node.js 应用代码位于本地 /opt/module/node/ 目录,你想将此目录挂载到容器中的 /app 目录,以便于在宿主机编辑代码并在容器中实时更新,可以执行以下命令:

docker run -it -p 3000:3000 --name my-node-app -v /opt/module/node/:/app my-node-app
  • -v /opt/module/node/:/app 将本地的 Node.js 应用程序目录挂载到容器内的 /app 目录。
  • -p 3000:3000 映射了宿主机的 3000 端口到容器的 3000 端口。

    创建一个简单的 Node.js Web 应用程序(可选)

    为了演示,我们可以在本地创建一个简单的 Express 应用。例如,在本地目录 /opt/module/node/ 创建 app.js 文件:

    // /opt/module/node/app.js
    const express = require('express');
    const app = express();
    const port = 3000;
    app.get('/', (req, res) => {
      res.send('Hello from Node.js in Docker!');
    });
    app.listen(port, () => {
      console.log(`App is running at http://localhost:${port}`);
    });
    

    在容器内安装应用依赖并启动服务

    # 进入容器内部
    docker exec -it my-node-app bash
    # 在容器内部安装Express
    npm install express
    # 启动Node.js应用
    node app.js
    

    验证安装和部署是否成功

    在宿主机上打开浏览器,访问 http://localhost:3000,如果能看到 “Hello from Node.js in Docker!” 的消息,则表明 Node.js 已经在 Docker 容器中成功安装和部署,并且 Web 服务可以通过网络访问。

    docker安装nodejs,并更改为淘宝源,在这里插入图片描述,第1张