云原生开发 CNB 配置代理遇到的坑
如何复制文件
CNB 设置自定义环境有两种方式:
- 在 Dockerfile 中添加
- 在 script 脚本中添加
目标:复制配置文件到指定目录
方式一:Dockerfile 方式(不推荐)
在 Dockerfile 中会出现找不到文件的问题。原因是每次构建云开发环境时,会在一个带有随机 ID 的上下文中进行 docker build,这个上下文无法读取到项目文件,因为无法精确获取到路径。即使在 Dockerfile 中使用相对路径也无法解决此问题。
方式二:Script 脚本方式(推荐)
在 .cnb.yml 的 script 脚本中实现,配置如下:
1 | $: |
如何在每次拉取最新订阅时避免覆盖自定义规则
方案一:开启 TUN 模式
由于云开发环境运行在 Docker 容器中,TUN 模式可能会遇到网络连接问题,需要特别注意网络配置。
方案二:使用 Mixin 功能
需要注意 Clash 版本差异:
- CFW(Clash for Windows):完全支持 mixin 模式
- 原版 Clash:不一定支持 mixin 模式,需要检查版本兼容性
最终解决方案:脚本自动化修改
推荐方案: 使用最直接的方式,通过脚本来动态修改配置文件,确保自定义规则不被覆盖。
实现思路:
- 在订阅更新前备份自定义规则
- 更新订阅后自动合并自定义规则
- 使用脚本监控配置文件变化并自动处理