首页 > 编程语言 >构建Node.js的应用镜像

构建Node.js的应用镜像

时间:2024-11-01 15:47:18浏览次数:7  
标签:Node 16 app js build 镜像 COPY

在现代软件开发中,Docker 已成为构建和部署应用的重要工具。今天,我们将深入探讨如何优化一个 Node.js 应用的 Dockerfile,以支持多版本、多语言,并保持构建环境的干净。

首先,让我们看看我们的基础 Dockerfile:

# 构建阶段:使用 Node.js 16 和 Debian Buster 作为基础镜像
FROM node:16-buster AS build

# 设置工作目录
WORKDIR /app

# 复制所有项目文件到容器中
COPY . .

# 安装依赖并构建应用
RUN npm install
RUN npm run build:app-sit

# 运行阶段:使用更轻量的 Node.js 16 Slim 镜像
FROM node:16-slim
 
# 设置工作目录
WORKDIR /app

# 从构建阶段复制必要的文件
COPY --from=build /app/packages/app/dist ./dist
COPY --from=build /app/packages/common-deploy/server ./server
COPY --from=build /app/packages/common-deploy/package.json .

# 安装生产环境依赖
RUN npm install

# 暴露应用端口
EXPOSE 3000 

# 启动应用
CMD ["npm", "start"]

标签:Node,16,app,js,build,镜像,COPY
From: https://blog.csdn.net/u012172506/article/details/143429571

相关文章

  • 基于node.js+vue基于Android的答疑预约系统的设计与实现前(开题+程序+论文)计算机毕业设
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于答疑预约的研究,现有研究主要集中在传统的线下答疑预约或者基于网页端的答疑预约方式,专门针对基于Android平台的答疑预约系统的研究较少。随着移动设备的......
  • 基于node.js+vue机械产品工程图纸管理系统(开题+程序+论文)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于机械产品工程图纸管理的研究,现有研究主要集中在传统纸质图纸管理和基本的电子文档管理系统上,专门针对集成化、智能化的工程图纸管理系统的探讨相对较少......
  • 基于node.js+vue基于Android的服装搭配APP(开题+程序+论文)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于服装搭配的研究,现有研究主要以线下实体店搭配建议或时尚杂志推荐为主,专门针对基于Android平台开发服装搭配APP的研究较少。在国内外,虽然有一些关于......
  • 前端的全栈Deno篇(五):与前端保持一致的模块化方案,摆脱ERR_REQUIRE_ESM和mjs、cjs等模块
    在现代JavaScript开发中,模块化系统的演变经历了多次变革,使得前端和后端开发人员在选择模块加载方式时常常感到困惑。尤其是Node.js所采用的CommonJS和ESM(ECMAScriptModules)两种模块体系,以及文件扩展名的多样性(如.cjs、.mjs和.js)带来的复杂性和混乱。Deno的诞生以及其2.0版......
  • CesiumJS 案例 P17:添加文本、文本样式、删除文本、移动文本
    CesiumJSCesiumJSAPI:https://cesium.com/learn/cesiumjs/ref-doc/index.htmlCesiumJS是一个开源的JavaScript库,它用于在网页中创建和控制3D地球仪(地图)一、添加文本<!DOCTYPEhtml><htmllang="en"> <head> <metacharset="UTF-8"/> &l......
  • 关于构建镜像-python的rpc服务打镜像
    要在离线Docker环境中构建并导出amd64架构的Docker镜像,你可以按照以下步骤操作:1.确保使用正确的基础镜像首先,确保Dockerfile中的基础镜像是适用于amd64架构的。例如,你可以使用python:slim作为基础镜像。如果已经在离线环境中启动了python:slim镜像,这里不需要做任......
  • js中的原型、原型链
    1.对原型、原型链的理解在JavaScript中是使用构造函数来新建一个对象的,每一个构造函数的内部都有一个prototype属性,它的属性值是一个对象,这个对象包含了可以由该构造函数的所有实例共享的属性和方法。当使用构造函数新建一个对象后,在这个对象的内部将包含一个指针,这个指针......
  • [专有网络VPC]创建和管理流量镜像
    通过流量镜像功能,您可以将符合筛选条件的经过弹性网卡ENI的网络流量复制并发送到指定目的实例,从而实现对网络流量的监控和分析需求。前提条件初次使用时,请登录流量镜像开通页面,根据提示开通流量镜像功能。如果镜像会话中的镜像源和镜像目的不属于同一个专有网络VPC(Virtual......
  • Stable Diffusion Web UI 1.9.4 Docker 基础镜像
    镜像的构建会需要科学上网,不会的人,最好的方式就是花钱购买境外服务器。本文使用:Windwos11+WSL(Ubuntu22.04)进行镜像构建,使用 Clash代理。读者相同环境,实现代理需要两项配置-配置一:WSL开启镜像模式-配置二:Clash开启局域网访问模式+TUN模式即可让WSL中的......
  • Debian 基础镜像与容器构建最佳实践指南
    引言在容器化应用开发中,选择合适的基础镜像至关重要。Debian作为一个稳定、安全且广受欢迎的Linux发行版,其官方Docker镜像成为了许多开发者的首选。本文将深入探讨Debian基础镜像的类型、特点,以及如何在容器构建中有效地使用它们。1.Debian基础镜像概述Debian......