前言
之前一直是在使用cloudstudio作为在线开发的主力工具,但是cloudstudio对于自定义环境实在是不够友好,并且提供的存储空间也相对比较小气。一直以来,我都是在本地的TeXLive或者是overleaf上编写TeX文件的。
前不久coding的升级改版中直接提供了云原生开发的功能,不仅能直接提供现有的code-server在线开发功能,甚至通过Dockerfile自定义环境,弥补了在某些小场景下使用持续集成"杀鸡用牛刀"的问题。
正巧,需要用TeX写一份简历,那就用新上线的云原生开发来试一下。
需求
根据现有文档,可以明确以下支持的功能:
- 支持自定义环境
- 支持自行设定开发环境算力,cpu:ram=1:2
- 运行宿主机位于腾讯云内网,可以使用腾讯云内网资源
所需开发环境有以下要求:
- 使用TeXLive新版本作为基础,即xetex而不是对CJK不友好的latex
- 使用的CPU数尽可能少。
- 创建开发环境过程尽量不受网络干预。
编写.coding-ci.yml
coding中云原生开发和云原生构建所依据的就是这个.coding-ci.yml。其中可以指定不同的触发器,触发器对应的操作,各类操作使用的环境,环境的各项参数以及在环境中运行的命令。设定CPU数量的yml案例已经在文档中给出,直接照抄就可以。
代码语言:yaml复制$:
api_trigger_vscode: # 通过云原生开发触发器
clouddev:
docker:
# 优先使用 .ide/Dockerfile 文件构建基础镜像
# 如果仓库中不存在 .ide/Dockerfile 文件,则使用默认镜像 codingci/default-env:latest
build: .ide/Dockerfile
image: codingci/default-env:latest
runner:
cpus: 4 # 设定使用的CPU数量,可以设定为1-8的之间的整数
services:
- vscode
- docker
stages:
- name: 开启云原生开发
type: vscode:go
编写Dockerfile
Dockerfile里面就有许多可以踩的坑了
一开始我在docker hub上面直接找到了TeXLive官方构建的TeXLive镜像。这还不直接爽用?很快啊,这第一版的Dockerfile就出炉了。
代码语言:shell复制FROM mirror.ccs.tencentyun.com/texlive/texlive:latest-full
RUN sed -i 's/deb.debian.org/mirrors.tencentyun.com/g' /etc/apt/sources.list && apt update && apt install -y wget unzip openssh-server
RUN curl -fsSL https://code-server.dev/install.sh | sh &&
code-server --install-extension redhat.vscode-yaml &&
code-server --install-extension orta.vscode-jest &&
code-server --install-extension james-yu.latex-workshop &&
echo done
# 指定字符集支持命令行输入中文(根据需要选择字符集)
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
这里替换了两个部分,首先是在FROM中指定了使用腾讯云内网的Docker镜像加速而非直接从docker.io下载。接着便是替换源,将容器中预设的镜像源地址替换为腾讯云镜像源的内网地址加速apt更新下载。
替换的时候就有一个坑,texlive使用的是debian12的Docker容器作为基础,而此处我使用的写法是Debian11使用的一键替换命令,也就是说。
我这里使用sed去替换会直接提示我没有这个文件!
从Debian12开始,Docker中的apt源文件位置移动到了/etc/apt/sources.list.d/debian.sources,而不再是原来的位置。与此同时,Debian12的CD-image中镜像源仍然保留在此前的位置不变。
此时,基本上全部的流量都通过腾讯云的服务了,唯一剩下的也就是code-server的安装过程了