首页 > web前端 > js教程 > 如何使用docker使用node.js

如何使用docker使用node.js

Joseph Gordon-Levitt
发布: 2025-02-08 11:49:09
原创
127 人浏览过

本教程演示了将docker容器用于node.js应用程序的优点,并建立了有效的开发工作流程。

> node.js在服务器和客户端端都使用JavaScript来创建快速,可扩展的Web应用程序。 尽管您的应用程序可能会在开发机上完美运行,但它在不同的环境(同事的机器,生产服务器)上的性能始终如一。 考虑以下这些潜在问题:

  • >>操作系统变化:您的开发环境可能是MacOS,而同事使用Windows,而Production Server则运行Linux。
  • node.js版本不一致:您可以使用node.js 20,但其他人则使用各种版本。
  • >依赖关系差异:数据库和其他依赖关系在不同的平台上可能会有所不同或不可用。
  • 安全问题:
  • 在将代码部署到各种操作系统时可能会出现不可预见的安全风险。
  • 密钥益处

跨平台兼容性:
    docker通过启用node.js应用程序在孤立的容器环境中运行来解决“它在我的计算机上工作”问题。 Docker中的Simply Node.js App部署:我们将通过创建基本node.js脚本并在Docker容器中执行它。>>>>>
  • >>增强node.js开发工作流程:我们将展示Docker如何简化Node.js应用程序的开发过程。
  • > docker的解决方案
  • docker有效地解决了上述兼容性挑战。您无需直接安装应用程序,而是在轻巧的,孤立的虚拟机式环境中运行,称为容器。
与模拟整个PC硬件和操作系统的虚拟机不同,Docker仿真了操作系统,使您可以直接安装应用程序。 每个基于Linux的容器运行一个应用程序并通过虚拟网络进行HTTP通信是常见的做法。

优点很多:>

一致的环境:您的Docker设置镜像您的生产Linux服务器,简化了部署。

How to Use Node.js with Docker 简化的依赖关系管理:

在几分钟内下载,安装和配置依赖项。

跨平台一致性:

您的容器化应用程序在所有平台上的行为相同。>
    >
  • 增强的安全性:>如果您的应用程序在容器中发生故障,它不会影响您的主机机器;您可以轻松重新启动容器。
  • >使用Docker,在本地安装Node.js或使用NVM(例如NVM)的运行时管理器变得不必要。>

    您的第一个node.js脚本

    >安装Docker桌面(Windows,MacOS或Linux)。创建一个名为version.js的简单脚本:

    >
    console.log(`Node.js version: ${process.version}`);
    登录后复制

    如果Node.js是本地安装的,请运行它以查看版本。 现在,在Docker容器中运行(使用最新的LTS Node.js版本)

    $ docker run --rm --name version -v $PWD:/home/node/app -w /home/node/app node:lts-alpine version.js
    登录后复制

    (Windows PowerShell)

    > docker run --rm --name version -v ${PWD}:/home/node/app -w /home/node/app node:lts-alpine version.js
    登录后复制
    docker下载依赖项可能需要花费一些时间。随后的运行速度要快得多。 您可以轻松地切换node.js版本(例如,

    )。 该脚本在具有特定node.js版本的Linux容器中执行。 node:21-alpine

    命令分解:

    :从图像启动一个容器。
    • docker run:终止时卸下容器。
    • --rm:为容器分配一个名称。
    • >
    • --name version:将当前目录安装为容器内部的音量。
    • :设置容器内的工作目录。> -v $PWD:/home/node/app
    • :指定Docker Image(Alpine Linux上的LTS node.js)。
    • -w /home/node/app
    • :执行的命令。
    • Docker图像可在Docker Hub上获得,提供的各种版本标记了node:lts-alpine
    • >的标识符。 Alpine Linux是简单项目的轻量级发行版。
    • version.js>
    • 运行更复杂的应用程序

    对于具有依赖关系和构建步骤的应用程序(使用NPM),必须进行自定义Docker映像。此示例使用express.js::lts-alpine 20-bullseye-slim创建一个名为latest的目录,add

    > >和

    创建simplepackage.json

    {
      "name": "simple",
      "version": "1.0.0",
      "description": "simple Node.js and Docker example",
      "type": "module",
      "main": "index.js",
      "scripts": {
        "debug": "node --watch --inspect=0.0.0.0:9229 index.js",
        "start": "node index.js"
      },
      "license": "MIT",
      "dependencies": {
        "express": "^4.18.2"
      }
    }
    登录后复制
    构建图像:

    index.js>

    运行容器:
    // Express application
    import express from 'express';
    
    // configuration
    const cfg = {
      port: process.env.PORT || 3000
    };
    
    // initialize Express
    const app = express();
    
    // home page route
    app.get('/:name?', (req, res) => {
      res.send(`Hello ${req.params.name || 'World'}!`);
    });
    
    // start server
    app.listen(cfg.port, () => {
      console.log(`server listening at http://localhost:${cfg.port}`);
    });
    登录后复制

    > Dockerfile>在

    >。
    # base Node.js LTS image
    FROM node:lts-alpine
    
    # define environment variables
    ENV HOME=/home/node/app
    ENV NODE_ENV=production
    ENV NODE_PORT=3000
    
    # create application folder and assign rights to the node user
    RUN mkdir -p $HOME && chown -R node:node $HOME
    
    # set the working directory
    WORKDIR $HOME
    
    # set the active user
    USER node
    
    # copy package.json from the host
    COPY --chown=node:node package.json $HOME/
    
    # install application modules
    RUN npm install && npm cache clean --force
    
    # copy remaining files
    COPY --chown=node:node . .
    
    # expose port on the host
    EXPOSE $NODE_PORT
    
    # application launch command
    CMD [ "node", "./index.js" ]
    登录后复制
    上访问该应用程序

    adocker image build -t simple .文件可以防止不必要的文件被复制到图像中。

    >

    改进了Docker组成的开发工作流程docker run -it --rm --name simple -p 3000:3000 simple

    >

    先前的方法效率低下。 Docker组成提供了更好的解决方案。创建http://localhost:3000/

    .dockerignore

    开始。 更改为触发自动重新启动。 使用VS Code的调试器(附加到端口9229)进行增强调试。 停止使用

    >。

    结论

    docker-compose.yml

    虽然Docker需要初始设置,但可靠,可分发代码的长期收益很重要。 本教程涵盖了基本面;探索进一步的资源以进行高级使用。 这些图像是为了简洁而保留的。

以上是如何使用docker使用node.js的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板