前端项目容器化(Docker)打包部署

F#函数派
• 阅读 895

前端项目容器化(Docker)打包部署

  • 新建一个vue项目
  • 增加容器配置
  • docker命令打包镜像,部署本机
  • BiliBili视频同步发布

    新建vue项目

  • 使用vue官方脚手架创建一个项目

    • 下面的demo使用默认配置
  • 安装依赖并运行

    # 使用vue脚手架创建项目
    npm create vue@latest
    
    # 进入项目(假设项目名为"xxc-web")
    cd xxc-web
    # 安装依赖
    npm install
    # 测试
    npm run dev

    手动打包部署(旧方式)

  • 单机部署方式通常使用"npm run build"打包成静态文件

    • 通常打包后文件在项目根目录的"dist"目录下
  • 将dist目录的文件上传服务器
  • 配置nginx,将某域名/端口号指向该目录
  • 之后即可使用http://ip:port访问

    容器化(Docker)打包部署

    打包配置

  • 根目录新增"nginx.conf"文件

    • 为了解决部分框架部署后的路由问题
    • 如:该开始访问一切正常,但是使用浏览器刷新后,报错404
  • 文件内容如下:

    server {
      listen       80;
      listen  [::]:80;
      server_name  localhost;
    
      access_log  /var/log/nginx/host.access.log  main;
    
      location / {
          root   /usr/share/nginx/html;
          index  index.html index.htm;
    
          # 新增下面这句,其他是默认nginx配置
          # 解决部分前端框架的路由问题,在浏览器刷新报错404
          try_files $uri $uri/ /index.html;
      }
    
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   /usr/share/nginx/html;
      }
    }
  • 根目录新增"Dockerfile"文件

    • 打包过程分为两个阶段
    • 第一阶段:使用node镜像安装依赖并打包成静态文件
    • 第二阶段:将静态文件放入nginx镜像,并修改配置
  • 文件内容如下:

    # 第一阶段:node镜像打包
    FROM node:latest AS frontend-builder
    WORKDIR /build-app
    COPY . .
    RUN npm install
    RUN npm run build
    
    # 第二阶段:nginx打包
    FROM nginx:latest
    EXPOSE 80
    WORKDIR /app
    # 替换nginx配置
    COPY nginx.conf /etc/nginx/conf.d/default.conf
    # 将第一阶段的静态文件复制到nginx中
    RUN rm -rf /usr/share/nginx/html
    RUN mkdir /usr/share/nginx/html
    COPY --from=frontend-builder /build-app/dist /usr/share/nginx/html
    
    # 运行
    CMD ["nginx", "-g", "daemon off;"]

    打包部署

  • 使用docker命令打包

    • 镜像名称为"xxc-web:v1"
  • 将镜像上传到docker仓库或私有仓库(Harbor)
  • 运行容器

    # 打包镜像
    docker build -t xxc-web:v1 . 
    
    # 上传仓库
    # docker login -u <用户名> -p <密码> <仓库地址>
    # docker push xxc-web:v1
    
    # 运行
    docker run --name xxc-web -dp 1234:80 xxc-web:v1
点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
springboot使用之快捷打包部署
本篇关键知识点:Maven的assembly插件实现自定义打包部署(包含依赖jar包) 目前springboot项目的几种常见的部署方式。1\.使用docker容器去部署,将springboot的应用构建成一个dockerimage,然后通过容器去启动镜像,这种方式在
Stella981 Stella981
4年前
Docker容器使用jenkins部署web项目
(1)需要安装Docker容器,在Docker容器内安装jenkins,gogs,tomcat。  新建maven项目,添加findbugsplugin。使用docker启动jenkins,gogs,Tomcat的命令gogs:dockerrunitdp10022:22p10080:3000restarta
Easter79 Easter79
4年前
SpringCloud 微服务 (十七) 容器部署 Docker
壹从第一篇SpringCloud预备学习(https://my.oschina.net/u/3829444/blog/1829667)到现在,基本组件学习也接近尾声,最后完成的项目,就可以部署关于部署,会结合docker容器进行,在学习SpringCloud的同时,也粗略学习了docker的知识,也推荐大家使用docker容器技术wi
Stella981 Stella981
4年前
Docker:dockerfile构建php项目 [八]
一、把项目封装成docker镜像的步骤把项目封装成docker镜像的步骤:1、先运行一个基础容器,手动制作docker镜像2、编写dockerfile,构建镜像3、测试运行二、dockerfile常用指令参考1、dockerfile常用指令:
Easter79 Easter79
4年前
Springboot基于assembly的服务化打包方案
  在使用assembly来打包springboot微服务项目前,我想说一说,目前springboot项目的几种常见的部署方式。1. 使用docker容器去部署,将springboot的应用构建成一个dockerimage,然后通过容器去启动镜像,这种方式在需要部署大规模的应用和应用扩展时是非常方便的,属于目前工业级的部署方案,但是需要掌握d
Wesley13 Wesley13
4年前
Docker镜像与容器命令
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、baremetal、OpenStack集群和其他的基础应用平台。Docker通常用于如下场景:web应用的自动化打包和发布;自动化测试和持续集成、发布;
Stella981 Stella981
4年前
Docker(一):Docker入门
简介Docker是一个开源的容器引擎,可以帮助我们更快的交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序进行管理。可更快的打包、测试以及部署应用程序,并可减少从编写到部署代码的周期。Docker架构!(https://img2018.cnblogs.com/blog/1040
Stella981 Stella981
4年前
Docker 最常用的镜像命令和容器命令
  本文列出了Docker使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份。熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习Docker的镜像构建、备份恢复迁移、镜像仓库、网络、集群等等更多的内容。镜像相关命令  官方文档:https://docs.docker.com/r
Stella981 Stella981
4年前
Docker 容器介绍
Docker容器介绍_Docker_是一个基于_Go_语言的开源应用容器引擎,它既能实现虚拟化,又可用于将应用服务打包成轻量、可移植的容器,从而可以发布到任何_Linux_平台。除了优秀了沙箱机制外,_Docker_容器的开销也极低。正如其名,_Docker_所做的事情正是以一个集装箱的身份承载应用服务的运行
Stella981 Stella981
4年前
Docker是什么,有什么用?一看就明白
!(https://oscimg.oschina.net/oscnet/0228dafbae90d0634ad850b7338e067bfb4.jpg)Docker是一个基于轻量级虚拟化技术的容器,整个项目基于Go语言开发,并采用了Apache2.0协议。Docker可以将我们的应用程序打包封装到一个容器中,该容器包含了应用程序的代码、运行环境、依
3A网络 3A网络
3年前
docker中启动所有的容器命令
docker中启动所有的容器命令前提:在3A服务器上部署docker环境docker中启动所有的容器命令javascriptdockerstart$(dockerpsa|awk'print$1'|tailn2)docker中关闭所有的容器命令javascriptdockerstop$(dockerpsa|a
F#函数派
F#函数派
Lv1
我绕得过江山错落,绕不过你。
文章
7
粉丝
0
获赞
0