本文需要OSS(对象存储)云服务。它可以独自购买几美分,我们可以将静态资源上传到OSS并为OSS提供CDN服务。
在本文中,该项目CRA-DEPLOY示例也被上传到OSS处理。
假设将具有哈希值的静态资源推向CDN。目前,静态资源的地址是:。这是我们将在WebPack中配置的。
在中间,我们进一步封装,读取其源代码并了解其配置。
可以看出,可以通过设置环境变量public_url来配置CDN地址。
将静态资源上传到云服务时,我们需要一个AccessKey/AccessSecret来获得权限。可以参考文档创建AccessKey
它是OSS中的存储空间。对于生产环境,可以为每个项目创建一个单独的存储桶,在测试环境中,多个项目可以共享存储桶。
创建水桶时,您需要注意以下问题。
对于端点的选择,您可以参考访问域名和数据中心
最终的public_url是,例如本文的public_url例如项目。
但是,您还可以配置CNAME记录并使用域名。
在以下命令行和代码示例中,我们将CRA-Deplay项目的所有静态资源上传到存储桶中。
在OSS上创建一个水桶,将静态资源上传通过官方工具Ossutil。
在资源上传之前,需要权限。
该命令可以将本地资源上传到OSS。缓存策略与上一篇文章一致:
为了方便起见,可以将两个命令保持到中间
另一种方式,通过官方SDK:Ali-Oss准确控制资源:
该脚本被省略。
PS:上传OSS的配置文件位于脚本/uploadoss.js中,可以通过用脚本控制静态资源来上传。
PS:此Dockerfile配置位于Cra-Deploy/oss.dockerfile中
由于使用代码的管理,我们无法将敏感信息写入Dockerfile。
因此,arg在这里被用作变量。可以传递或在中传递ARG。
PS:此组合配置位于Cra-Deploy/Docker-Compose.yaml中
在配置文件中,可以将其传递。
也不允许敏感数据。目前,环境变量通过环境变量传递。
PS:您可以在本地传递主机环境变量的值。CI呢,生产环境呢?CI分会将在稍后宣布。
首先,手动配置主机的环境变量,与Dockerfile中的环境变量相同的名称:
目前,您可以将主机的主机传递到Docker.args中的docker-compose:dockerfile:
跑,成功!
在连续优化了几篇文章之后,当我们使用对象存储服务时,镜像中实际上只有几个文件。
我们可以走得更远,将所有静态资源放在公共服务中吗?
是的,实际上,也可以像这样配置OSS/COS(对象存储服务),但是它更麻烦,例如重写,重定向规则和其他配置。
如果您既没有个人服务器也没有个人域名,则可以将您的前端网站放在以下免费托管服务平台上。
通过本文,我们将静态资源部署到CDN(几乎相当于CDN),这与大多数公司的生产环境一致。
但是,最好在测试环境中上传到OSS。毕竟,上传到OSS需要额外的时间,并且对测试环境没有重要意义。
但是实际上,在上传和存储阶段可以进一步优化OSS。请阅读下一篇文章。
原始:https://juejin.cn/post/7104288145432444965