泰国清迈房产网站大全,关键词优化诊断,封面上的网站怎么做的,传媒网站建设方案Docker部署
本节我们来介绍如何使用 Docker 部署 express 应用
准备工作
linux 系统安装好 Docker一个基础的 evp-express-cli 项目#xff0c;选上 pkg 工具包Docker 的详细用法本文不做介绍#xff0c;请先自行查阅了解
在 Docker 中部署源码
一个很简单的部署方法就是…Docker部署
本节我们来介绍如何使用 Docker 部署 express 应用
准备工作
linux 系统安装好 Docker一个基础的 evp-express-cli 项目选上 pkg 工具包Docker 的详细用法本文不做介绍请先自行查阅了解
在 Docker 中部署源码
一个很简单的部署方法就是拉取一个 node 基础镜像直接在里面运行 express 项目 以下是 .dockerignore 示例
node_modules
dist以下是响应的 Dockerfile 示例
# Build environment
FROM node:16
ENV NODE_ENVproductionWORKDIR /appCOPY . .RUN npm installEXPOSE 8080
CMD [node src/index.js]基本流程就是
拉取node镜像指定工作目录拷贝项目源码及资源文件安装依赖暴露端口设置启动命令
在 Docker 中构建部署
上面采取的是直接部署源代码当然也可以先对源码进行构建再部署。这里又可以分为两种一种仍然需要 node 运行时仅仅借助 rollup 之类的工具将源码打包为单个 .js 文件然后部署时只需拷贝这单个文件即可具体过程无需再做介绍
另一种是脱离 node 运行时使用 pkg 构建 express 项目最终部署构建产物到纯净的 linux 镜像即可。如果你在进行 docker 部署前事先构建好再部署那具体做法也不需介绍本文介绍的是在 docker 中阶段的从零构建到部署的过程
编写 Dockerfile:
拉取合适的 node 镜像作为构建环境builder 是构建镜像别名可以随便取后面有用
# Build environment
FROM node:16 AS builder
ENV NODE_ENVproduction拷贝依赖配置文件package.json和package-lock.json*到指定目录后面有用
WORKDIR /appCOPY [package.json, package-lock.json*, ./]安装依赖包
RUN npm install拷贝源码以其它要一并被打包进可执行程序的文件
ADD src src
ADD assets assets构建适用于linux的可执行程序示例的产物名为 DockerDeploy后面有用
RUN npm run build:linux拉取一个 linux 镜像作为运行环境示例选用了 debian具体能用哪个还要视项目而定
# lightly runtime environment
FROM debian设置时区如果需要的话
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo Asia/Shanghai /etc/timezone从构建镜像将中构建好的可执行程序拷贝到到运行镜像下的指定目录 语法COPY --from构建镜像别名 可执行程序路径 指定目录路径
COPY --frombuilder /app/dist/DockerDeploy /app/拷贝外部的资源文件和文件夹如果有的话示例没有略过如有用 ADD 或 COPY 即可暴露端口并在指定目录下运行可执行程序
WORKDIR /appEXPOSE 8080
CMD [./starfolder-service]以下是完整的 Dockerfile 示例
# Build environment
FROM node:16 AS builder
ENV NODE_ENVproductionWORKDIR /appCOPY [package.json, package-lock.json*, ./]RUN npm installADD src srcRUN npm run build:linux# lightly runtime environment
FROM debianRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo Asia/Shanghai /etc/timezoneCOPY --frombuilder /app/dist/starfolder-service /app/WORKDIR /appEXPOSE 8080
CMD [./DockerDeploy]这样的分阶段构建过程可以尽可能得减小最终的镜像体积 下一节-pm2进程管理