docker部署前端项目(四)

embedded/2024/10/19 3:27:49/

1、一直想使用docker 部署多个前端项目

咨询了几个方案走不通,他们使用的是 创建 Nginx 容器
或者 直接 用 NGINX 起项目 跟我的路子 用dockerdockerfile 来部署 不太一样

所以使用了自己的方法:

方案 : 一个容器对应一个前端项目
对于每一个前端项目,创建一个单独的Docker镜像。这意味着你需要分别为每个项目准备一个Dockerfile。下面是基本步骤:

创建Dockerfile:在每个前端项目的根目录下创建一个Dockerfile。这个文件应该包含必要的指令来构建应用,比如基于Node.js镜像,复制源代码,安装依赖,构建生产静态文件,然后使用Nginx或其他Web服务器来服务这些静态文件。

例如,对于Vue项目,Dockerfile如下:

# bash复制代码# 使用 Node.js 16 作为基础镜像
FROM node:16# 将当前工作目录设置为/app
WORKDIR /app# 将 package.json 和 package-lock.json 复制到 /app 目录下
COPY package*.json ./# 运行 npm install 安装依赖
RUN npm install# 将源代码复制到 /app 目录下
COPY . .# 打包构建
RUN npm run build# 将构建后的代码复制到 nginx 镜像中
FROM nginx:latest
COPY --from=0 /app/dist /usr/share/nginx/html# 暴露容器的 8080 端口,此处其实只是一个声明作用,不写的话也可以,后面运行容器
# docker run --name container_name -p <host_port>:<container_port>命令中container_port可以覆盖此处的声明,不写就默认80端口
EXPOSE 80# 启动 nginx 服务
CMD ["nginx", "-g", "daemon off;"]

构建镜像:在每个项目的目录中,运行以下命令来构建Docker镜像:

命令:注意是一个项目一个镜像

docker build -t my-frontend1 .
docker build -t my-frontend2 .

运行容器:为每个镜像启动一个容器,指定不同的端口映射:

命令:

docker run -d -p 8080:80 my-frontend1
docker run -d -p 8081:80 my-frontend2

如何部署多个前端项目:

如果遇到构建的时候,一直找不到问题,就可以清理一下缓存数据

清理构建缓存和其他无用数据:
docker system prune -af
清理缓存与重新构建
docker build --no-cache -t your-image-name .

http://www.ppmy.cn/embedded/24016.html

相关文章

每日OJ题_贪心算法一⑥_力扣334. 递增的三元子序列

目录 力扣334. 递增的三元子序列 解析代码 力扣334. 递增的三元子序列 334. 递增的三元子序列 难度 中等 给你一个整数数组 nums &#xff0c;判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k &#xff0c;使…

C++实战演练---负载均衡在线oj项目预热

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 前言 学习准备了快一年时间&#xff0c;心心念念的实战演练终于可以开始了&#xff0c;话不多说&#xff0c;直接进入主题…

【多维动态规划】Leetcode 64. 最小路径和【中等】

最小路径和 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#xff1a; 输入&#xff1a;grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

php7.4在foreach中对使用数据使用无法??[]判读,无法使用引用传递

代码如下图&#xff1a;这样子在foreach中是无法修改class_history的。正确的应该是去掉??[]判断。 public function actionY(){$array [name>aaa,class_history>[[class_name>一班,class_num>1],[class_name>二班,class_num>2]]];foreach ($array[class_…

FIR滤波器——DSP学习笔记三(包含一个滤波器设计的简明案例)

​​​​​​ 背景知识 FIR滤波器的特性与优点 可精确地实现线性相位响应&#xff08;Linear phase response&#xff09;&#xff0c;无相位失真&#xff1b; 总是稳定的&#xff0c;所有极点都位于原点 线性相位FIR滤波器的性质、类型及零点位置 冲击响应满足&#xff1a;奇…

【数据结构7-1-查找-线性-二分法-二叉树-哈希表】

目录 1 查找基本概念2 线性表的查找2.1 顺序查找2.2 二分法查找2.3 分块查找 3 树表的查询3.1 二叉排序树3.1.1 定义3.1.2 二叉树的建立、遍历、查找、增加、删除&#xff1a;3.1.3 代码实现&#xff1a; 3.2 平衡二叉树3.2.1 平横因子3.2.2 不平横树的调整-左旋3.2.3 不平横树…

Django框架之request对象

一、request对象 1、简介 服务器接收到http协议的请求后&#xff0c;会根据报文创建HttpRequest对象&#xff0c;这个对象不需要我们创建&#xff0c;直接使用服务器构造好的对象就可以。视图的第一个参数必须是HttpRequest对象&#xff0c;在django.http模块中定义了HttpReq…

第三方软件测试机构-科技成果评价测试

科技成果评价测试是对科研成果的工作质量、学术水平、实际应用和成熟程度等方面进行的客观、具体、恰当的评价过程。这一评价过程有助于了解科技成果的质量和水平&#xff0c;以及其在学术和应用方面的价值和潜力。 科技成果评价测试主要包括以下几个方面&#xff1a; 工作质量…