前端镜像可以考虑使用nginx或者openresty;

镜像 大小 说明
nginx:1.20.2-alpine 8.41 MB 最小最新版本
nginx:1.21.4 50.95 MB 最新版本
nginx:stable 1.20.2 52.27 MB 稳定版本
openresty/openresty:1.19.9.1-4-alpine 33.14 MB 最小最新版本
openresty/openresty:1.19.9.1-4-alpine-fat 109.68 MB 最小最新功能最全版本

vue工程

分阶段打包脚本:

  1. FROM node:17.3.0
  2. #FROM node:latest
  3. WORKDIR /data/cycube/
  4. COPY . /data/cycube/
  5. RUN npm config set registry=https://packages.aliyun.com/61516fe9bdfa1bd1b630ac57/npm/npm-registry/
  6. RUN npm install
  7. RUN npm run build
  8. ######################分阶段构建######################
  9. FROM registry.cn-shanghai.aliyuncs.com/cycube/app:nginx-1.20.2-alpine
  10. EXPOSE 80
  11. COPY --from=0 /data/cycube/dist/ /usr/share/nginx/html/
  12. COPY --from=0 /data/cycube/nginx.conf /etc/nginx/conf.d/default.conf
  13. RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone
  14. ENTRYPOINT ["nginx"]
  15. CMD ["-g","daemon off;"]

运行成功;

openresty

  1. FROM openresty/openresty:1.19.9.1-4-alpine
  2. EXPOSE 80
  3. COPY ./dist/ /usr/share/nginx/html/
  4. COPY nginx_front.conf /etc/nginx/conf.d/default.conf
  5. ENV TZ=Asia/Shanghai
  6. RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  7. ENTRYPOINT ["nginx"]
  8. CMD ["-g","daemon off;"]

配置文件:

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. root /usr/share/nginx/html/;
  5. location / {
  6. try_files $uri $uri/ @router;
  7. index index.html;
  8. }
  9. location /test {
  10. default_type text/html;
  11. content_by_lua_block {
  12. ngx.say("<p>hello, openresty!!!</p>")
  13. }
  14. }
  15. error_page 404 /404.html;
  16. error_page 500 503 504 /50x.html;
  17. location = /50x.html {
  18. root /usr/share/nginx/html;
  19. }
  20. error_page 502 =200 @jump_to_error;
  21. location @jump_to_error {
  22. default_type application/json;
  23. return 200 '{"ret":503,"msg":"服务器正在重启,请稍候"}';
  24. }
  25. }

打包,

  1. docker build -t frontrest:v1 -f Dockerfile2resty ./

测试;

  1. docker run --name frontrest:v1 -p 80:80 -d frontrest:v1

lua写的快速接口运行:

正常前端访问:

小结

最终采用openresty作为前端的基础镜像,后续一些短平快的接口实现,直接使用lua搞定;基础镜像大了一部分,但是能力也大大增加了。

因为前端node版本不同,打包结果和耗时比较随机,这里跟前端妹子约定了版本号,后续的开发环境的版本也使用这个 node:17.3.0

参考资料

openresty作为网关

https://blog.csdn.net/Xavider/article/details/103544222

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。

团队vue基础镜像选择思考的更多相关文章

  1. 还在用Alpine作为你Docker的Python开发基础镜像?其实Ubuntu更好一点

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_173 一般情况下,当你想为你的Python开发环境选择一个基础镜像时,大多数人都会选择Alpine,为什么?因为它太小了,仅仅只有 ...

  2. React 还是 Vue: 你应该选择哪一个Web前端框架?

    学还是要学的,用的多了,也就有更多的认识了,开发中遇到选择的时候也就简单起来了. 本文作者也做了总结: 如果你喜欢用(或希望能够用)模板搭建应用,请使用Vue    如果你喜欢简单和“能用就行”的东西 ...

  3. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明

    缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...

  4. python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)

    一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...

  5. vitess基础镜像构建流程Centos

    以下列出了构建vitess使用的Centos镜像的简单流程,由于较早基础版本是Centos7.2的,重新构建可以基于最新的Centos版本构建 1.基础镜像拉取 #拉取官方版本 docker pull ...

  6. [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程 V0.2

    之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准. 基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础im ...

  7. Vue基础(1)

    目录 Vue基础 基础 导入 1. 挂载 2. 插值表达式 3. 事件 4. 创建对象 5. v-text和v-html 6. vue的过滤器 7. 属性指令 Vue基础 基础 首先我们要知道Vue是 ...

  8. 第一篇:Vue基础

    Vue基础 渐进式JavaScript框架 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目 走进Vue 什么是Vue 渐进式JavaScrip ...

  9. 自动构建自己的ASP.NET Core基础镜像

    在开发过程中,我们可以根据自身情况来定制自己的基础镜像,以便加快CI\CD构建速度以及提高开发体验.这里我们就以ASP.NET Core的基础镜像为例来进行讲解. 本次教程代码见开源库:https:/ ...

随机推荐

  1. 带分数--第四届蓝桥杯省赛C++B/C组

    第四届蓝桥杯省赛C++B/C组----带分数 思路: 1.先枚举全排列 2.枚举位数 3.判断是否满足要求 这道题也就是n=a+b/c,求出符合要求的abc的方案数.进行优化时,可以对等式进行改写,改 ...

  2. 关于NSMutableAttributedString进行富文本 UILabel 的制作

    //1.初始化与其他无异 NSMutableAttributedString *AttributedStr2 = [[NSMutableAttributedString alloc]initWithS ...

  3. Java基础问题

    基础问题 谈谈你对面向对象的理解 -- 结合场景 为何要使用对象编程? 可重复利用,方便拓展 面向对象有三大特征:封装.继承和多态 封装:为什么要封装?可以使类的成员(数据和行为)有选择性的暴露,这里 ...

  4. 李宏毅机器学习笔记——新手感悟——PM2.5作业

    python也不会,计算机也不会,啥都不会,只带了个脑子考了计算机研究生.研究生选了人工智能方向.看来注定是漫长的学习之旅. PM2.5作业,我是一个字都看不懂.所以我采用了直接看答案的方案.把答案看 ...

  5. Docker容器日志的种类以及存储

    Docker 日志 Docker的日志可以分为两类: stdout标准输出日志 stdout就是标准输出里面的日志, 比如程序运行时输出在控制台的内容就会写入标准输出 原理就是当在启动进程的时候,进程 ...

  6. 想找好用的BI软件?看这一篇就够了:2021年好用的BI软件推荐

    很多厂商活跃在商业智能(下面称BI)领域.事实上,能够满足用户需要的BI产品和方案必须建立在稳定.整合的平台之上,该平台需要提供用户管理.安全性控制.连接数据源以及访问.分析和共享信息的功能.那么,有 ...

  7. [gRPC via C#] gRPC本质的探究与实践

    鉴于内容过多,先上太长不看版: grpc 就是请求流&响应流特殊一点的 Http 请求,性能和 WebAPI 比起来只快在 Protobuf 上: 附上完整试验代码:GrpcWithOutSD ...

  8. RHEL6搭建网络yum源仓库

    RHEL的更新包只对注册用户生效,所以需要自己手动改成Centos的更新包 一.查看rhel本身的yum安装包 rpm -qa | grep yum 二.卸载这些软件包 rpm -qa | grep ...

  9. Python:matplotlib.pyplot

    翻译总结自:matplotlib.pyplot - Matplotlib 3.4.3 documentation 函数 说明 acorr x的自相关性图 angle_spectrum 角度谱 anno ...

  10. c# TextBox只能输入数字的处理方法(完整版各种情况考虑在内,可根据需求灵活修改)

    //选择文本框的事件窗口,找到按键输入的方法KeyPress,双击建立新的方法. /// <summary> /// textBox只能输入数字的处理方法 /// </summary ...