请教各位关于小公司前端部署的问题

24 天前
 fliu2476

背景:

react 的 SPA 项目,以前都是手动打包上传服务器解压到目录,每次都是增量更新,nginx 指向静态目录,这种方式的优劣:

最近用上了 gitlab 的 CI/CD ,直接打包生成 docker 镜像自动到服务器部署,这样确实轻松不少,但是会有一些问题:

尝试解决

请教各位

在不进行大规模的变动的情况下,有没有更简单的办法解决这个问题,感谢~

1409 次点击
所在节点    程序员
23 条回复
billzhuang
24 天前
这东西有自己路由么?能直接部署在对象存储开启静态网站,然后前面套个 CDN 么?
iOCZS
24 天前
没有银弹,夜里更新呗
evill
24 天前
"劣势:正在访问页面的用户会存在动态加载资源(如路由懒加载 js )失败的情况" 感觉像是直接 down and UP ?
尝试用灰度切流呗
bzw875
24 天前
不可能的。某个员工休产假回来页面也留了 3 个月,你也要保证她路由懒加载可用吗?
newaccount
24 天前
我选择保留所有旧版本资源,硬盘又不值钱
就算是被人说贵的阿里云,每月每 G 都不到一块钱,这玩真不值得折腾
fliu2476
24 天前
@billzhuang 这个也可以,不过又要弄个 cdn ,感觉有些麻烦了
fliu2476
24 天前
@evill 请问这个流量怎么区分呢
fliu2476
24 天前
@bzw875 那倒是不用,token 有效期都没那么久
fliu2476
24 天前
@newaccount 道理是这样哈哈哈,但是还是想折腾个好方案
wu67
24 天前
重要的在公司公告渠道发更新公告.
不重要的错开高峰使用期更新就行. 例如给内部用的系统, 直接就下班后更新, 要么就刚上班的时候更新...
newaccount
24 天前
@fliu2476 #9 实在想折腾你就写个脚本,判断文件夹的更新日期,然后定期删除超过这个日期一个月的文件
han3sui
24 天前
html 文件在 docker 里,资源文件在 oss ,前面套个 cdn
zhhqiang
24 天前
通知客户刷新 - - 我就这么干的
evill
24 天前
最简单的方式,前端加载时获取一下版本,并每次请求时 header 带上版本
在 LB(nginx 、HA.....)上判断 header ,做个简单的 AB

当时这是最简单,实际情况还要按照项目配合
fliu2476
24 天前
@han3sui 目前看来资源套 cdn 还是最简单有效的
fliu2476
24 天前
@evill 学习了,这种方式也可以
billzhuang
24 天前
纯静态资源,不应该放在 docker 或者 nginx 下,对象存储+开启静态网站+CDN 才是最简单的。
fgk
24 天前
增量,存储不值钱。公司成本看 更不会放在眼里
w292614191
24 天前
可以先挂载 nginx 的 html 到 gitlab-runner 环境,docker 构建后复制到目录覆盖完事,这样是无感部署的。

也可以用 jenkins 的 docker 模式来构建,也是映射项目到容器环境,大概是这样的:

`
docker run --rm \
-v "${SAFE_WORKSPACE}:/app" \
-v "${MAVEN_REPO}:/root/.m2" \
-w /app \
maven:3.6.3-openjdk-17 \
sh -c "mvn -Dmaven.test.skip=true clean package"
`

w292614191
24 天前
@w292614191 #19 前端也是类似的:

`
# 处理特殊字符
SAFE_WORKSPACE=$(echo "${WORKSPACE}" | tr ' ' '_' | tr -d '()')

rm -rf dist

echo '复制文件到容器中构建'
docker run --rm \
-v "${SAFE_WORKSPACE}:/app" \
-w /app \
node:18 \
sh -c "npm config set registry https://registry.npmmirror.com && npm install -g pnpm && \
pnpm config set registry https://registry.npmmirror.com && \
pnpm install && pnpm run build
"
`

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1144220

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX