logo
0
0
WeChat Login

基于 archlinux 构建的编程开发开发环境

这是给 CNB云开发环境 用的容器镜像,基础镜像基于 Arch Linux。

项目背景

云平台提供的系统镜像大多面向服务器,软件版本保守;开发环境却需要更新工具链。
CNB云开发环境支持远程容器开发,本项目维护一套分层构建的 dockerfile,用于产出可在 CNB 直接使用的 Arch Linux 开发镜像。

项目特点

  • 分层构建:starter → 地基,sideway → 旁路编译,trunkway → 最终镜像,做了点小小的缓存复用工作
  • 国内加速:尽量国内镜像源,加速构建
  • 多语言内置:python / go / node 开箱即用
  • 远程开发随心选:VSCode / CodeBuddy 装个 Remote-SSH 插件就能连;也支持一键拉起 WebIDE(code-server)直接网页写代码;终端党 ssh 进来用 nvim/helix/vim 凑合用

环境要求

  • Docker;或 Podman + Buildah 组合;或者其他兼容 docker build 命令的构建环境
  • Git
  • Bash
  • 20 GB 以上磁盘空间
  • 可访问公网镜像源

项目结构

./ ├── starter/ # 地基:换国内源,装基础包 ├── sideway/ # 旁路:下源码编东西,产出文件在镜像里边,给主链路 COPY --from ├── trunkway/ # 主干道:集成环境,出最终镜像,能在 CNB云开发环境 直接用 └── buildimg.sh # 镜像构建脚本

构建流程

流水线构建

项目根目录已放好 .cnb.yml,推送 main 分支即触发 CNB 自动构建,默认只重新构建有变动的 dockerfile。
想强制全量构建,按需更新 .citrigger

  • 项目根目录 .citrigger → 触发全部 dockerfile 重新构建
  • starter/sideway/trunkway/ 子目录下的 .citrigger → 仅触发该子目录内所有 dockerfile 重新构建

本地手动构建

# 起个名字,不填默认 localhost/cnbdev export ProjImageName=my-archl ./buildimg.sh starter ./buildimg.sh sideway ./buildimg.sh trunkway

本地构建单个文件

./buildimg.sh sideway/code-server.dockerfile

使用说明

在 CNB云开发环境中使用

  1. 把构建完的镜像推到 CNB 仓库
  2. 在项目根目录新建 .cnb.yml
$: vscode: - runner: cpus: 4 docker: image: docker.cnb.cool/squorm/cnb-ydev-archl:latest # 我构建的,可直接用,也可换成你自己的镜像地址 services: - vscode - docker
  1. 推送 main 分支后,在代码仓库页面点橙色「云原生开发」按钮即可拉起 workspace

官方文档戳这里:CNB 云开发环境文档

注意事项

  • 依赖公网镜像站点,构建失败大概率网络抽风,重试就行
  • Arch 更新快,底层依赖随时可能变动,构建炸了先清缓存再试
  • 别直接在生产机裸跑,炸了自行背锅

懒人直接拿

镜像已推 docker.cnb.cool/squorm/cnb-ydev-archl:latest,latest 即最新,直接引用即可。

About

cnb开发环境容器镜像, 基于archlinux.

Language
Dockerfile76.5%
Shell23.5%