經過上一篇文章 基於Vue和Quasar的前端SPA項目實戰之業務數據(七)的介紹,crudapi-admin-web基本功能所有實現了,本文主要介紹前端打包和docker部署相關內容。javascript
Docker是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的鏡像中,而後發佈到任何流行的 Linux或Windows 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。採用docker技術能夠很方便地實現持續集成和交付CI/CD。html
build: { vueRouterMode: 'history', publicPath: '/crudapi/', distDir: `dist/${ctx.modeName}/crudapi` }
一般將前端打包以後的文件放在一個子目錄下,方便和其它系統集成,好比能夠放在spring boot項目的resources/static/crudapi目錄下,避免放在根目錄,因此這裏配置publicPath爲crudapi。前端
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
構建分爲兩個階段:vue
優化:
package.json放在第一步copy,目的是爲了緩存,從而提升鏡像構建速度,由於一般狀況下package.json不會頻繁修改,只要package.json不變,後面的npm install命令就不會重複構建。java
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規則node
.DS_Store .git .gitignore node_modules dist .quasar .vscode .dockerignore package-lock.json Dockerfile *.md
dockerignore排除的不須要的文件,避免構建過程當中copy無用文件。nginx
本地打包docker和運行git
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官網hubhttps://hub.docker.com/repository/docker/crudapi/crudapi-admin-web,直接pull也能夠。github
docker pull crudapi/crudapi-admin-web:latest docker tag crudapi/crudapi-admin-web:latest crudapi-nginx:latest
訪問 http://127.0.0.1/crudapiweb
本文主要介紹了vue前端打包和docker部署相關內容,到目前爲止,crudapi-admin-web代碼已經完成,後續會繼續優化代碼,文檔也會持續更新。每一篇文章對應的代碼,都打上了tag,命名規則爲t1,t2..., 歡迎下載代碼學習和交流。
官網地址:https://crudapi.cn
測試地址:https://demo.crudapi.cn/crudapi/login
https://github.com/crudapi/crudapi-admin-web
https://gitee.com/crudapi/crudapi-admin-web
因爲網絡緣由,GitHub可能速度慢,改爲訪問Gitee便可,代碼同步更新。