665 字约 2 分钟
通过 Docker 镜像指定开发环境
在 .cnb.yml 中编写云原生开发事件流水线,通过 docker.image 指定开发环境。
如果指定镜像中已安装 code-server,将使用单容器模式启动;未安装则使用双容器模式。
指定开发环境镜像支持两种方式,按需在下方示例中二选一:
使用已有镜像(image)
.cnb.yml
$: # 兜底匹配所有分支,不被 glob 匹配的分支
vscode:
- docker:
image: cnbcool/default-dev-env:latest
services:
- vscode
- docker
stages:
- name: ls
script: ls -al通过 Dockerfile 构建(build)
.cnb.yml
$: # 兜底匹配所有分支,不被 glob 匹配的分支
vscode:
- docker:
# 使用仓库根目录的 .ide/Dockerfile 构建镜像
build: .ide/Dockerfile
# image 作为构建失败时的回退镜像(可选)
image: cnbcool/default-dev-env:latest
services:
- vscode
- docker
stages:
- name: ls
script: ls -alimage:直接使用已有镜像(适用于预置镜像场景)build:通过 Dockerfile 自定义构建(与image二选一,也可同时指定image作为回退镜像)
通过 Dockerfile 自定义开发环境
如果指定镜像无法满足需求,可在仓库根目录创建 .ide/Dockerfile 来自定义开发环境。
未自定义启动流水线时,系统会优先使用 .ide/Dockerfile 构建镜像作为基础镜像。 如果 .ide/Dockerfile 不存在或构建失败,会回退使用默认镜像。
# .ide/Dockerfile
# 可将 node 替换为需要的基础镜像
FROM node:20
# 安装 code-server 和常用 vscode 插件
RUN curl -fsSL https://code-server.dev/install.sh | sh \
&& code-server --install-extension cnbcool.cnb-welcome \
&& code-server --install-extension redhat.vscode-yaml \
&& code-server --install-extension dbaeumer.vscode-eslint \
&& code-server --install-extension mhutchie.git-graph \
&& echo done
# 安装 ssh 服务,用于支持 VSCode 等客户端通过 Remote-SSH 访问开发环境(也可按需安装其他软件)
RUN apt-get update && apt-get install -y git wget unzip openssh-server
# 指定字符集支持命令行输入中文(根据需要选择字符集)
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8同时自定义开发环境和启动流程
如果需要同时自定义开发环境和启动流程,可编写 .ide/Dockerfile 和 .cnb.yml。 Dockerfile 内容与上文相同,不再重复。
.cnb.yml 中启用 build: .ide/Dockerfile(参考上方「通过 Dockerfile 构建」示例), 并可同时指定 image 作为回退镜像。完整写法如下:
.cnb.yml
$: # 兜底匹配所有分支,不被 glob 匹配的分支
vscode:
- docker:
build: .ide/Dockerfile
image: cnbcool/default-dev-env:latest
services:
- vscode
- docker
stages:
- name: install deps
script: npm install
- name: dev
script: npm run dev