从0开始打包docker镜像全过程记录——nodejs(koa2)/pm2

实战教程:通过Docker将Node应用部署至服务器,并集成PM2实现负载均衡 通过本文的实战教程,你已经学会了如何通过Docker将Node应用部署到服务器上,并集成PM2来实现负载均衡。这不仅可以提高应用的可用性和性能,还可以简化部署和管理流程。当然,这只是一个起点,你可以根据实际需求进一步扩展和优化你的部署方案。 阅读详情

1. 首先下载docker

  • windows下直接访问Docker Hub,进行下载。

  • Linux系统使用命令行下载(实例为ubuntu系统)

  1. 设置docker的apt存储库
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  1. 安装最新版的docker包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 验证是否安装成功
sudo docker run hello-world
# 该命令会下载测试镜像并启动,成功的话会打印一条消息并退出

2. 在项目根目录创建Dockerfile文件,用来执行容器创建后的命令

  1. 声明node基础镜像,点击查询更多基础镜像
FROM node:18.19.1-alpine
  1. 声明npm镜像源(可选),下载pnpm进行依赖的安装,安装pm2
RUN npm config set registry https://registry.npmmirror.com
RUN npm install -g pnpm pm2
  1. 指定容器内的工作目录,拷贝项目进入容器
WORKDIR /usr/src/app # 这里是容器内部路径
COPY . . # COPY <本地路径> <容器内路径>
  1. 安装依赖,使用pm2运行项目
RUN pnpm install
CMD pm2-runtime app.js # app.js修改为你项目的入口文件
  1. 完整的Dockerfile文件
FROM node:18.19.1-onbuild
RUN npm config set registry https://registry.npmmirror.com
RUN npm install -g pnpm pm2
WORKDIR /usr/src/app # 这里是容器内部路径
COPY . . # COPY <本地路径> <容器内路径>
RUN pnpm install
CMD pm2-runtime app.js # app.js修改为你项目的入口文件

3. 创建镜像,运行容器

  1. 执行docker build命令创建应用镜像。
docker build -t my-image .
-t 指定镜像名字,后面的 . 告诉Dockerfile文件在当前目录寻找
  1. 执行docker run命令运行一个容器。
docker run -d -p 80080:8080 my-image
-d 指定容器后台执行 -p <主机端口>:<容器端口> 最后是镜像名
-p参数会将容器内部的端口映射到主机上,这样才能从外部访问到容器内部的应用

没出什么问题的话,应该可以从指定端口访问你的应用了~

NodeJs后端项目使用docker打包部署 默认已经安装好docker并且配置没有问题。 阅读详情

相关推荐

PM2 与 Docker 结合使用:Node.js 应用的高效管理与部署

本文将详细介绍 PM2 的功能、Docker 的优势,并展示如何在 Docker 容器中使用 PM2 管理 Node.js 应用,实现高效、稳定的部署。PM2(Process Manager 2)是 Node.js 的流行进程管理工具,能够帮助开发者更好地管理和监控应用进程。但 Node.js 是单线程的,直接运行多个。以下是一个完整的 Node.js 应用示例,展示如何在 Docker 中使用 PM2 管理应用。)允许开发者定义应用的启动参数、环境变量和资源限制,简化了应用的部署和管理。

canduecho的专栏 1388

nodejs koa2简单入门教程

koa2通过ES7中的async和await来使异步请求写起来变得像同步 服务器每次收到http请求就会执行app.use()注册中的async函数并且传入ctxnext参数 Koactx将node的request和response对象封装到单个对象中 koa把很多async函数(middleware中间件)组成一个处理链 每个函数(middleware中间件)从上往下依次执行处理不同的功能 然后调用awaitnext()执行下一个函数(middleware中...

xuhang139的博客 2627

计算机视觉-全景图像拼接中的特征匹配与优化策略

本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。

weixin_29039773的博客 361

docker 安转pm2并打包成新镜像

学习 docker 最好还是整个服务器,买太贵了,建议租一个,我用的是 3A 服务器!!!

dahaidoushishuia的博客 1117

RK3568 MIPI屏幕启动异常:从uboot logo到黑屏的排查与修复

本文详细分析了RK3568平台MIPI屏幕在启动过程中,从uboot阶段正常显示logo到内核阶段黑屏的典型故障。通过硬件测量与软件调试,最终定位问题根源在于电源时序,并提供了在设备树中为屏幕供电的regulator节点添加`regulator-boot-on`属性的关键解决方案,有效解决了因内核启动早期电源管理导致的显示异常。

weixin_29161719的博客 540

Halcon实战:5分钟搞定自定义直线卡尺工具(附完整代码下载)

本文详细介绍了如何使用Halcon快速开发自定义直线卡尺工具,通过交互式ROI绘制、边缘检测和直线拟合三个核心函数,实现高效工业视觉检测。文章包含完整代码下载,帮助开发者在5分钟内掌握这一实用工具的开发技巧,提升直线检测的精度和效率。

perl8的博客 249

Nodejs KOA服务搭建打包

Nodejs KOA服务搭建打包 koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。 const Koa = require("koa"); const fs = require("fs"); const Router = r

随风浅入画 2416

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1968

nodejs 后端项目文件打包

nodejs 后端项目文件打包 (koa2 的打包可以看这里) 应用场景 使用 webpack,像打包前端代码一样打包后端代码,以便在创建 docker 镜像时过滤 node_modules,使镜像变小,加快 push 速度。 安装 npm install 非打包运行 npm start 访问 http://localhost:3000 打包 npm run buil...

通然物联官方账号 4407

LLM的MCP协议:初识MCP,搭建第一个MCP Server

MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。

Criss@陈磊 2万+

31、Labview如何搭建程序框架?--状态机到数据采集等常用框架

本文废话不多,直接列举几种框架搭建方式,为了尽量向大家提供干货,本文直接从简介和手把手教搭建框架两方面来讲解,本文提到五种经典框架模式,学会这五种就很够了,分别是:状态机框架(State Machine)、生产者-消费者框架(Producer-Consumer)、主-从框架(Master-Slave)、事件驱动框架(Event-Driven)、分层架构(Layered Architecturep)。这个框架是基于状态机结构的。顾名思义“状态机”就是个“切换程序状态的机器”。本质是一个。

关注我,更多技术问题欢迎私聊~ 3101

制作Docker镜像,在前端的应用

1. 制作Docker镜像 Dockerfile是一个由一堆命令+参数构成的脚本, 使用docker build即可执行脚本构建镜像, 自动的做一些事,主要用于进行持续集成。 一般, Dockerfile共包括四部分: 基础镜像信息 不可能从头到尾创建一个完整的镜像, Docker镜像是分片的文件系统, 如果从头到尾创建就是重复劳动, 可以基于别人创建好的基础上添加. 维护者信息 镜像操作指令 容器启动时执行指令 一个简单的Koa应用: const Koa = require('koa'); const

桃子阿桃 1285

手把手教你完成基于matlab的LSTM时间序列分析

时间序列是按时间顺序组织的数字序列,是数据分析中重要的处理对象之一。时间序列的主要特点是数据获取方式一般具有客观性,能反映某种现象的变化趋势或统计指标,进而预测未来走向,这在本质上也是一个回归预测的问题。长短时记忆网络(Long Short-Term Memory,LSTM)是一种循环神经网络,适合处理有更长时间跨度的内部记忆,被广泛应用于时间序列分析,能够保持数据的内在持续性,反映数据的细粒度走势,具有良好的预测效果。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 896

Docker 制作自己的镜像

如果你写 Dockerfile 时经常遇到一些运行错误,依赖错误等,你可以直接运行一个依赖的底,然后进入终端进行配置环境,成功后再把做过的步骤命令写道 Dockerfile 文件中,这样编写调试会快很多。,跑起来后进入容器终端配置依赖的软件,然后尝试跑起来自己的软件,最后把所有做过的步骤写入到 Dockerfile 就好了。这是一个 Nodejs + Koa2 写的 Web 项目,提供了简单的两个演示页面。掌握好这个技巧,你的 Dockerfile 文件编写起来就非常的得心应手了。查看当前运行中的容器。

每天都要努力学习哦~~ 762

OpenClaw 报错 TypeError: Cannot read properties of undefined (reading ‘prototype‘):Node.js 版本不兼容

国产化环境中部署OpenClaw云边协同平台时,出现"TypeError: Cannot read properties of undefined (reading 'prototype')"报错。经分析发现根本原因是Node.js版本与依赖生态不兼容,新版本Node(如v21)移除了旧依赖使用的内部API。解决方案包括:1)使用nvm切换至兼容的Node 16/18 LTS版本;2)容器化部署固定Node版本;3)遵循官方推荐的引擎版本范围。该问题揭示现代工程中版本管理的重要性,

博客 2313

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

dcoker入门,使用docker部署NodeJs应用

docker简介   原作者:进击的小羊驼   docker是一个开源的应用容器引擎,可以为我们提供安全、可移植、可重复的自动化部署的方式。docker采用虚拟化的技术来虚拟化出应用程序的运行环境。如上图一样。docker就像一艘轮船。而轮船上面的每个小箱子可以看成我们需要部署的一个个应用。使用docker可以充分利用服务器的系统资源,简化了自动化部署和运维的繁琐流程,减少...

weixin_30886233的博客 192

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

2万人同时访问 nodejs_从 0 开始之脚本神器 Jupyter 与 Nodejs 实践

今日文章由作者 @唱不完的离歌 授权分享,文末阅读原文可跳转至原文查看俗话说 “工欲善其事必先利其器”,好的工具能让我们的工作事半功倍。当我刚开始正式工作时就经常遇到一些需要跑脚本处理的一些内容,刚开始我都是将需要跑的脚本写好,然后 push 到 git 上,然后再到线上服务器中 pull 下来再执行。当某个地方有问题需要修改时就再次重复上述操作,如此繁琐的操作让人头大又无奈。直到我发现...

weixin_33345728的博客 305

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用nodejs构建Docker image最佳实践

docker容器的出现,彻底的改变了应用程序的运行方式,而nodejs同样的也颠覆了后端应用程序的开发模式。两者结合起来,就会产生意想不到的作用。 本文将会以一个常用的nodejs程序为例,分析怎么使用docker来构建nodejs image.

程序那些事 7979

第一次DOCKER编译NODEJS记

第一次DOCKER编译NODEJS记前置条件新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 type null...

loongboys的博客 1022

docker部署nodejs应用

docker三个核心概念如下: * 镜像(images):一个只读的模板,可以理解为应用程序的运行环境,包含了程序运行所依赖的环境和基本配置。相当于上图中的每个小箱子里面装的东西。 * 仓库(repository):一个用于存放镜像文件的仓库。可以看做和gitlab一样。 * 容器(container):一个运行应用程序的虚拟容器,他和镜像最大的区别在于容器的最上面那一层是...

G-god的博客 3902

Docker部署基于Nodejs的Web应用-实战篇

转载自 https://segmentfault.com/a/1190000010541792 Docker docker是一个开源的应用容器引擎,可以为我们提供安全、可移植、可重复的自动化部署的方式。docker采用虚拟化的技术来虚拟化出应用程序的运行环境。此种方式具有以下优势: 每个部署的应用程序都是一个容器,彼此隔离,互不影响; 服务器只需要安装docker即可运

qq_26188449的博客 609

将多个 Node.js 服务打包成一个镜像,并在 Docker Compose 中使用这个镜像

要将多个 Node.js 服务打包成一个镜像,并在 Docker Compose 中使用这个镜像,创建一个统一的 Dockerfile 来构建所有的 Node.js 服务,并将这些服务打包到同一个镜像中。接下来,您可以在 Docker Compose 文件中,将这个 Dockerfile 作为构建上下文,并使用统一的镜像来运行服务。这样,您就可以使用单个镜像来运行您的所有 Node.js 服务。然后,您需要将上面的 Dockerfile 放置在与您的项目文件相同的目录中,并且确保您的项目结构中有名为。

小豆包 1053
上一篇: 从0搭建WSL下的Ubuntu(18.04)前端环境
下一篇: 安装jenkins的docker镜像,并一键部署vue项目
時が止まる
博客等级 码龄8年 38粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值