「免费开源」基于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/574307/

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

(0)

大家都在看

  • 带你领略下iOS中OC的“alloc”源代码,让你在工作中不在迷惑

    前言前面我们使用官方开源的objc源码进行了编译调试 objc4-818.2源码编译调试笔记 前言为什么会想要调试源码? 苹果开源了部分源码, 但相似内容太多, 基本找不到代码见的…

    Java 2023年6月16日
    074
  • SAP S4HANA 2021 Fully-Activated Appliance 虚拟机版分享

    该版本内置了四个Client: 1、000:SAP初始Client,原则上不能动; 2、100:只激活了US/DE两套BP,带大量Demo数据,可做数据参考; 3、200:复制Cl…

    Java 2023年5月30日
    089
  • SpringBoot 设置HTTP 响应状态码 (HTTP Status Code)

    SpringBoot 设置HTTP 响应状态码 (HTTP Status Code) HTTP请求响应的内容有很多,包括Body、Cookies、Headers和Status。我们…

    Java 2023年5月30日
    0177
  • 单点登录面试题

    多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求。 我将以我所遇到的应用环境以及在其中所经历的各个阶段与大家分享,若有不…

    Java 2023年5月29日
    085
  • 大白话布隆过滤器

    本文是站在小白的角度去讨论布隆过滤器,如果你是科班出身,或者比较聪明,又或者真正想完全搞懂布隆过滤器的可以移步。 不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大燥,仿佛…

    Java 2023年6月5日
    086
  • 保姆教程系列三、Nacos Config–服务配置

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到 保姆教程系列二、Nacos实现注册中心 配置中心原理 一、 服务配置中心介绍 首先我们来看一下,微…

    Java 2023年6月5日
    085
  • LeetCode.1189-balloon实例数最大值(Maximum Number of Balloons)

    这是小川的第416次更新,第449篇原创 看题和准备 今天介绍的是 LeetCode算法题中 Easy级别的第 267题(顺位题号是 1189)。给定一个字符串文本,使用文本字符来…

    Java 2023年6月5日
    080
  • 03-MyBatisPlus的CRUD 接口

    一、insert 1、插入操作 @RunWith(SpringRunner.class) @SpringBootTest public class CRUDTests { @Aut…

    Java 2023年6月15日
    072
  • 程序员要知道的22个学习网站

    点击标题即可直达链接网址 GitHub是一个面向开源及私有软件项目的托管以及在线软件开发平台,用于存储、跟踪和协作软件项目,开发者能够上传自己的代码文件,并与其他开发者在开源项目上…

    Java 2023年6月15日
    072
  • 【maven】Dependency “XXX”not found

    父工程pom文件中依赖报红, <dependencymanagement></dependencymanagement> 中依赖报红属于正常现象,在子工程继…

    Java 2023年6月15日
    063
  • javax.swing自带的几种显示风格.使用LookAndFeelInfo查看

    public static void main(String args[]) { try { for (javax.swing.UIManager.LookAndFeelInfo …

    Java 2023年5月29日
    089
  • JDK 1.8 完整日期时间Api (文末附示例)

    一、背景 jdk 1.8 之前, Java 时间使用 java.util.Date 和 java.util.Calendar 类。 Date today = new Date();…

    Java 2023年6月6日
    080
  • Java HashMap深入理解增删改查 源码学习 学习笔记

    Java源码解读(三)— HashMap深入理解之增删查改 学习地址:[HashMap深入理解之增删查改]: https://blog.csdn.net/dongmuyang/ar…

    Java 2023年6月5日
    0121
  • SpringBoot学习笔记

    SpringBOOt概念 SpringBoot提供了一种快速使用Spring的方式,基于约定大于配置的思想,让开发人员专注于逻辑业务,从而提高开发效率 SpringBoot快速入门…

    Java 2023年6月5日
    089
  • 设计模式之解释器模式

    解释器模式字面意思,也即解释某些内容的含义。这种设计模式是实际开发中最不容易用到的。比如SQL解析,符号处理引擎,会用到解释器模式,属于更底层的开发人员才会用到的设计模式。 本文就…

    Java 2023年6月8日
    093
  • 《Java编程思想》读书笔记(三)

    前言:三年之前就买了《Java编程思想》这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十一章到第十六章的内容…

    Java 2023年6月5日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球