云原生开发 CNB 配置代理遇到的坑

如何复制文件

CNB 设置自定义环境有两种方式:

  1. 在 Dockerfile 中添加
  2. 在 script 脚本中添加

目标:复制配置文件到指定目录

方式一:Dockerfile 方式(不推荐)

在 Dockerfile 中会出现找不到文件的问题。原因是每次构建云开发环境时,会在一个带有随机 ID 的上下文中进行 docker build,这个上下文无法读取到项目文件,因为无法精确获取到路径。即使在 Dockerfile 中使用相对路径也无法解决此问题。

方式二:Script 脚本方式(推荐)

.cnb.yml 的 script 脚本中实现,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
$:
vscode:
- docker:
build: .ide/Dockerfile
# 如果 Dockerfile 构建失败,则使用默认镜像
image: cnbcool/default-dev-env:latest
services:
- vscode
- docker
stages:
- name: copy config to etc
script:
- cp xxx xxx

如何在每次拉取最新订阅时避免覆盖自定义规则

方案一:开启 TUN 模式

由于云开发环境运行在 Docker 容器中,TUN 模式可能会遇到网络连接问题,需要特别注意网络配置。

方案二:使用 Mixin 功能

需要注意 Clash 版本差异:

  • CFW(Clash for Windows):完全支持 mixin 模式
  • 原版 Clash:不一定支持 mixin 模式,需要检查版本兼容性

最终解决方案:脚本自动化修改

推荐方案: 使用最直接的方式,通过脚本来动态修改配置文件,确保自定义规则不被覆盖。

实现思路:

  1. 在订阅更新前备份自定义规则
  2. 更新订阅后自动合并自定义规则
  3. 使用脚本监控配置文件变化并自动处理