「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之docker部署(八)

基于Vue和Quasar的前端SPA项目实战之docker部署(八)

回顾

通过上一篇文章基于Vue和Quasar的前端SPA项目实战之业务数据(七)的介绍,crudapi-admin-web基本功能全部实现了,本文主要介绍前端打包和docker部署相关内容。

简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。采用docker技术可以很方便地实现持续集成和交付CI/CD。

配置quasar.conf.js

build: {
  vueRouterMode: 'history',
  publicPath: '/crudapi/',
  distDir: dist/${ctx.modeName}/crudapi
}

通常将前端打包之后的文件放在一个子目录下,方便和其它系统集成,比如可以放在spring boot项目的resources/static/crudapi目录下,避免放在根目录,所以这里配置publicPath为crudapi。

Dockefile

FROM node:lts-alpine as builder

COPY package.json /crudapi-admin-web/package.json

WORKDIR /crudapi-admin-web
RUN npm install

COPY . /crudapi-admin-web/

WORKDIR /crudapi-admin-web

RUN npm run build

FROM nginx:latest

WORKDIR /crudapi-admin-web

COPY --from=builder /crudapi-admin-web/dist/spa .

COPY ./docker/default.conf  /etc/nginx/conf.d/default.conf

EXPOSE 80

构建分为两个阶段:

  1. 利用node镜像编译打包
  2. 利用nginx镜像暴露80端口,提供http服务

优化:
package.json放在第一步copy,目的是为了缓存,从而提高镜像构建速度,因为通常情况下package.json不会频繁修改,只要package.json不变,后面的npm install命令就不会重复构建。

nginx配置

server {
    listen       80;
    server_name  localhost;

    charset 'utf-8';

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ /api {
      proxy_pass  http://demo.crudapi.cn;
    }

    location / {
        root   /crudapi-admin-web;
        index  index.html index.htm;
        try_files $uri $uri/ /crudapi/index.html;
    }
}

default.conf中主要配置两个location规则

  1. api部分转发到http://demo.crudapi.cn,可以替换为其它有效地址
  2. 其它内容永远访问/crudapi-admin-web/crudapi/index.html,vue内部自动处理路由

.dockerignore配置

.DS_Store
.git
.gitignore
node_modules
dist
.quasar
.vscode
.dockerignore
package-lock.json
Dockerfile
*.md

dockerignore排除的不需要的文件,避免构建过程中copy无用文件。

docker命令

本地打包docker和运行

docker build -t crudapi-admin-web:latest .
docker rm -f crudapi-admin-web
docker run -d -p 80:80 --name crudapi-admin-web crudapi-admin-web:latest
docker ps | grep crudapi-admin-web

最新的docker镜像已经自动上传到docker官网hub https://hub.docker.com/repository/docker/crudapi/crudapi-admin-web,直接pull也可以。

docker pull crudapi/crudapi-admin-web:latest
docker tag crudapi/crudapi-admin-web:latest crudapi-nginx:latest

进行验证

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之docker部署(八)
访问 http://127.0.0.1/crudapi

小结

本文主要介绍了vue前端打包和docker部署相关内容,到目前为止,crudapi-admin-web代码已经完成,后续会继续优化代码,文档也会持续更新。每一篇文章对应的代码,都打上了tag,命名规则为t1,t2…, 欢迎下载代码学习和交流。

demo演示

官网地址:https://crudapi.cn
测试地址:https://demo.crudapi.cn/crudapi/login

附源码地址

GitHub地址

https://github.com/crudapi/crudapi-admin-web

Gitee地址

https://gitee.com/crudapi/crudapi-admin-web

由于网络原因,GitHub可能速度慢,改成访问Gitee即可,代码同步更新。

Original: https://www.cnblogs.com/crudapi/p/14614467.html
Author: crudapi
Title: 「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之docker部署(八)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713133/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • phpcms安装

    【快速安装开始】 下载解压phpcms,复制安装文件到站点目录”/opt/html”里,给予权限(官网无法访问了,所以下载地址需自行寻找上传) cd /us…

    技术杂谈 2023年7月11日
    080
  • PWN学习总结

    一、栈溢出原理 什么是栈溢出?栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分…

    技术杂谈 2023年7月11日
    075
  • vue中this.$nextTick()的用法

    this.$nextTick 将回调延迟到下次DOM更新循环之后执行。在修改数据之后立即使用它,然后等待DOM更新。 this.$nextTick 跟全局方法 vue.nextTi…

    技术杂谈 2023年5月31日
    072
  • 我告诉你哦,最好吃的海南鸡饭不在海南…

    我告诉你哦,最好吃的海南鸡饭不在海南… http://www.360doc.com/content/15/0827/21/19476362_495258054.shtm…

    技术杂谈 2023年5月31日
    082
  • SFTP文件下载SFTP文件下载

    声明 作者:习惯沉淀 如果文中有误或对本文有不同的见解,欢迎在评论区留言。 如果觉得文章对你有帮助,请点击文章右下角【推荐】一下。您的鼓励是博主的最大动力! 扫码关注一线码农的学习…

    技术杂谈 2023年6月1日
    096
  • 4.多元线性回归

    线性模型假定预测(\hat{y})是对应(x={x_1,x_2,\cdots,x_p})的属性的线性组合,即: [\begin{align} \hat{y} &=\thet…

    技术杂谈 2023年7月10日
    049
  • day3

    链表的定义 class ListNode: def __init__(self, val, next=None): self.val = val self.next = next …

    技术杂谈 2023年7月10日
    074
  • php中的替换

    首先修改PHP.ini文件. 如下:1. 将short_open_tag = Off 改成On开启以后可以使用PHP的短标签:来代替同时,只有开启这个才可以使用 2. 将 asp_…

    技术杂谈 2023年5月31日
    0126
  • SpringMVC实战入门教程,四天带你快速搞定springmvc框架

    SpringMVC 也叫Spring web mvc。是Spring 框架的一部分,是在Spring3.0 后发布的。 这里对SpringMVC框架进行一个简单的介绍: sprin…

    技术杂谈 2023年7月25日
    087
  • DAX:跟关系相关的函数

    在表格数据模型中,用户可以创建关系,并可以沿着关系的方向自动进行交叉过滤。但是在 计算列中,必须通过RELATED 和 RELATEDTABLE函数来检索相关联的表。当使用CALC…

    技术杂谈 2023年5月31日
    094
  • 宕机日志解读

    参考 https://blog.csdn.net/rikeyone/category_10354155.html Linux内核故障分类和排查 Linux内核中oops 错误解析以…

    技术杂谈 2023年5月31日
    0111
  • SQL增删查改

    — sql 结构化查询语言 操作数据库的 — 注释 –空格 — 创建数据库create database itquanmingxin…

    技术杂谈 2023年7月25日
    076
  • Ajax学习笔记(二)

    二、prototype库具体解释 1、prototype库的使用 //导入下载好的prototype.js文件 //在自己的js中直接使用Prototype对象 document….

    技术杂谈 2023年5月30日
    091
  • Game Engine Architecture 9

    【 Game Engine Architecture 9】 1、Formatted Output with OutputDebugString() int VDebugPrintF…

    技术杂谈 2023年5月31日
    090
  • 贪吃蛇项目的制作

    该项目是根据GUI编程学习所写,详细的学习课程可以参考狂神说老师的GUI课程:一小时开发贪吃蛇。 以下仅仅为简要说一下 逻辑,源码放在最后。 实现该项目总共用到三个类: Data数…

    技术杂谈 2023年7月25日
    081
  • 如何kill一条TCP连接?

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介 如果你的程序写得有毛病,打开了很多TCP连接,但一直没有关闭,即常见的连接泄露场景,你可能想要…

    技术杂谈 2023年7月25日
    063
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球