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

前端使用 Vue 3 + Vite

1.use npm run preview 运行

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

angular2html 复制代码
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. 确保安装依赖

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

bash 复制代码
node -v

v20.18.0

bash 复制代码
npm install

2. 运行开发服务器

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

bash 复制代码
npm run dev

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

3. 访问开发环境

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

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

    http://localhost:5173
    

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

4. 构建生产环境

angular2html 复制代码
npm run dev
npm run build
npm run preview

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

2.docker 运行

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


1. 编译和打包前端资源

  1. 构建项目

    使用 npm run build 命令生成静态资源:

    bash 复制代码
    npm run build

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

  2. 检查打包结果

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


2. 配置 Nginx

2.1 创建 Nginx 配置文件

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

nginx 复制代码
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 镜像:

    bash 复制代码
    docker build -t amp_seminer_portal_frontend-nginx .
  3. 验证镜像

    运行生成的 Docker 镜像以验证配置是否正确:

    bash 复制代码
    docker run -p 8080:80 amp_seminer_portal_frontend-nginx

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


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

  1. 标记镜像

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

    bash 复制代码
    docker tag amp_seminer_portal_frontend-nginx jackkuo666/amp_seminer_portal_frontend-nginx:v1
  2. 推送镜像

    将镜像推送到指定的 Docker Registry:

    bash 复制代码
    docker push jackkuo666/amp_seminer_portal_frontend-nginx:v1
  3. 通知基建组

    向平台基建组提供以下信息:

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

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

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

bash 复制代码
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。
  • 基建组:拉取镜像并部署到目标环境。

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

相关推荐
王同学JavaNotes18 分钟前
React 基础:剖析 UI 描述之道
前端·react.js·ui
东离与糖宝21 分钟前
React 事件机制和原生 DOM 事件流有什么区别
前端·javascript·react.js
理想不理想v24 分钟前
JSX和vue模版哪个更好?
前端·javascript·vue.js·性能优化
等一场春雨25 分钟前
react Moment.js 是一个流行的 JavaScript 库,用于处理日期和时间。它提供了丰富的功能,包括日期格式化、解析、操作和国际化
前端·javascript·react.js
不爱说话郭德纲1 小时前
基于uniapp使用websocket进行实时通讯
开发语言·前端·javascript·vue.js
勇-子2 小时前
K8s docker-compose的入门
docker·eureka·kubernetes
鱼樱前端2 小时前
抽风【HbuilerX-Bug】终端无法显示打印信息,也无法输入
前端·开源
多客软件佳佳3 小时前
便捷的线上游戏陪玩、线下家政预约以及语音陪聊服务怎么做?系统代码解析
前端·游戏·小程序·前端框架·uni-app·交友
_Feliz3 小时前
vue2实现word在线预览
前端·javascript·vue.js·elementui·vue-office
huoyueyi3 小时前
超详细Chatbot UI的配置及使用
前端·ui·chatgpt