【docker】如何打包前端并运行

ops/2024/12/21 18:40:44/

前端使用 Vue 3 + Vite

1.use npm run preview 运行

0.项目根目录下新建.env文件

VITE_BASE_API_prod=http://127.0.0.1:5000/api # 线上环境
VITE_MOCK_API_prod=api                       # 本地模拟数据                       
VITE_BASE_API_dev=http://127.0.0.1:5000/api  # 开发环境
VITE_MOCK_API_dev=api                        # 本地模拟数据

1. 确保安装依赖

在项目的根目录下,确保你已经安装了所有的依赖包。运行以下命令来安装:

node -v

v20.18.0

npm install

2. 运行开发服务器

运行以下命令启动开发服务器:

npm run dev

这将执行 package.json 文件中定义的 dev 脚本。通常情况下,这会启动一个本地的开发服务器(如 Webpack Dev Server、Vite、Next.js 等),并监听你项目中的源代码文件。一旦你做出修改,开发服务器通常会自动重新加载页面。

3. 访问开发环境

开发服务器通常会启动在本地某个端口上(常见的是 localhost:5173 ),你可以在浏览器中输入相应地址访问你的应用。

  • 如果开发服务器运行在 localhost:5173,那么你可以在浏览器地址栏输入:
    http://localhost:5173
    

具体的端口号可以在命令行中看到,或者在 package.json 中查看 dev 脚本的配置。

4. 构建生产环境

npm run dev
npm run build
npm run preview

到此为止,就会在当前目录下阐述静态资源dist文件夹。

docker__49">2.docker 运行

前端资源编译打包并交付给平台基建组,主要涉及以下步骤:


1. 编译和打包前端资源

  1. 构建项目
    使用 npm run build 命令生成静态资源:

    npm run build
    

    这会在项目根目录下生成一个 dist 文件夹,包含所有的静态文件。

  2. 检查打包结果
    确保 dist 文件夹中的内容是完整的,包括 index.html 和相关的 CSS、JS 文件。


2. 配置 Nginx

2.1 创建 Nginx 配置文件

前端项目配置 Nginx。新建一个 Nginx 配置文件,例如 my-vue-app.conf,内容如下:

server {listen 80;server_name your.domain.com; # 替换为实际的域名或 IP 地址root /usr/share/nginx/html; # 指定静态资源的路径index index.html;location / {try_files $uri /index.html;}error_page 404 /index.html;# 可选:配置 gzip 压缩gzip on;gzip_types text/plain application/javascript text/css application/json;
}
2.2 确保目录一致

在配置文件中,root 指定的路径是 Nginx 用来加载前端资源的目录。比如 /usr/share/nginx/html


3. 将前端资源放入 Nginx 镜像

  1. 创建 Dockerfile
    在项目目录下新建一个 Dockerfile 文件:

    dockerfile">FROM nginx:latest# 删除默认的 Nginx HTML 文件
    RUN rm -rf /usr/share/nginx/html/*# 将本地的前端打包文件复制到 Nginx 镜像中
    COPY dist /usr/share/nginx/html# 复制自定义 Nginx 配置文件
    COPY AMP_SEMiner_portal_frontend.conf /etc/nginx/conf.d/default.conf
    
  2. 构建镜像
    使用 Docker 构建 Nginx 镜像:

    docker build -t amp_seminer_portal_frontend-nginx .
    
  3. 验证镜像
    运行生成的 Docker 镜像以验证配置是否正确:

    docker run -p 8080:80 amp_seminer_portal_frontend-nginx
    

    在浏览器中访问 http://localhost:8080,检查是否能够正确加载前端页面。


4. 将镜像交付给平台基建组

  1. 标记镜像
    给镜像打标签,指向公司或团队的 Docker Registry:

    docker tag amp_seminer_portal_frontend-nginx jackkuo666/amp_seminer_portal_frontend-nginx:v1
    
  2. 推送镜像
    将镜像推送到指定的 Docker Registry:

    docker push jackkuo666/amp_seminer_portal_frontend-nginx:v1
    
  3. 通知基建组
    向平台基建组提供以下信息:

  • 镜像名称和版本(例如:jackkuo666/amp_seminer_portal_frontend-nginx:v1)。
  • 配置中使用的端口(默认 80)。
  • 依赖的环境变量或运行时配置(如果有)。

5. 平台基建组的操作建议

基建组拉取镜像后,可以使用以下命令部署镜像:

docker pull jackkuo666/amp_seminer_portal_frontend-nginx:v1
docker run -d -p 80:80 --name amp_seminer_portal_frontend-nginx jackkuo666/amp_seminer_portal_frontend-nginx:v1

如果在 Kubernetes 环境下运行,建议基建组编写一个 Deployment 和 Service 配置文件,以便进行集群内的部署。


6. 总结

  • 前端开发者:负责编译、配置 Nginx、构建 Docker 镜像并推送到 Registry。
  • 基建组:拉取镜像并部署到目标环境。

通过这种方式,前端项目可以高效地交付和运行在生产环境中。


http://www.ppmy.cn/ops/143826.html

相关文章

【机器学习】机器学习的基本分类-强化学习-REINFORCE 算法

REINFORCE 算法 REINFORCE 是一种基于策略梯度的强化学习算法,直接通过采样环境中的轨迹来优化策略。它是策略梯度方法的基础实现,具有简单直观的优点。 核心思想 目标函数 最大化策略的期望回报: ​​​​​​​ …

Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

STM32单片机芯片与内部33 ADC 单通道连续DMA

目录 一、ADC DMA配置——标准库 1、ADC配置 2、DMA配置 二、ADC DMA配置——HAL库 1、ADC配置 2、DMA配置 三、用户侧 1、DMA开关 (1)、标准库 (2)、HAL库 2、DMA乒乓 (1)、标准库 &#xff…

FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.3,RTCP协议, RTCP协议概述,RTCP协议详情

官方文档参考:RFC 3550 - RTP: A Transport Protocol for Real-Time Applications

uniapp v-tabs修改了几项功能,根据自己需求自己改

根据自己的需求都可以改 这里写自定义目录标题 1.数组中的名字过长,导致滑动异常2.change 事件拿不到当前点击的数据,通过index在原数组中查找得到所需要的id 各种字段麻烦3.添加指定下标下新加红点显示样式 1.数组中的名字过长,导致滑动异常…

STM32内部flash分区

STM32的内部Flash根据型号和容量的不同,分区方式可能有所差异,但通常都包含以下几个主要部分: 主存储器:这是内部Flash的主要部分,用于存放程序代码和数据常量。在STM32F4系列中,主存储器被划分为多个扇区…

Java面试被问到GC相关问题如何回答?

前言 众所周知,Java在运行时将内存划分为五个主要部分:程序计数器、虚拟机栈、本地方法栈、堆以及方法区。值得注意的是,程序计数器、虚拟机栈和本地方法栈这三个区域的内存管理相对简单,它们的生命周期与线程同步,即…

防止私接小路由器

电脑获取到IP地址不是DHCP服务器的IP地址段,导致整个公司网络瘫痪,这些故障现象通常80%原因是私接小路由器导致的,以下防止私接小路由器措施。 一、交换机配置DHCP Sooping DHCP snooping是一种DHCP安全特性,用于防止非法设备获…