享受配置环境一下午,最后产出一个Hello World的成就感吗?
享受往自己的电脑里塞一堆几乎只用了一次的依赖的满足感吗?
Docker
这个东西都不陌生,大名鼎鼎的虚拟容器化技术使开发者们部署应用到不同的环境中不再有这样的烦恼:
欸?明明在我的机器可以正常,为什么在你的机器上就各种报错?
Docker的容器不仅仅可以用来运行应用,还可以用来配置一致的开发环境这就是Dev Container
我们知道,运行一个容器,当容器停止运行之后,所有的修改都会消失,所以就有挂载这么一个功能
我们把本机中的一个目录挂载到正在运行的容器中,然后把这期间要保存的数据都放在挂载目录下,就可以实现数据持久化
Dev Container其实就是利用这样的一个原理,开发者们可以自己配置容器的环境,然后把自己的工作目录挂载到容器中,这样就可以实现本机啥都没装,但是应用可以在容器中正常运行
不过要注意的是并不是所有的开发环境都适合用这个来开发。据我所知,移动端开发想配置Dev Container就非常困难。。。
这样你就可以通过创建不同的Dev Container而实现无缝切换各种开发环境
前提条件
官网的各个系统的条件
- Windows: Docker Desktop 2.0+ on Windows 10 Pro/Enterprise. Windows 10 Home (2004+) requires Docker Desktop 2.3+ and the WSL 2 back-end. (Docker Toolbox is not supported. Windows container images are not supported.)
- macOS: Docker Desktop 2.0+.
- Linux: Docker CE/EE 18.06+ and Docker Compose 1.21+. (The Ubuntu snap package is not supported.)
- Remote hosts: 1 GB RAM is required, but at least 2 GB RAM and a 2-core CPU is recommended.
总之要先安装Docker和VS Code
创建Dev Container
想创建一个Dev Container可以通过微软官方提供的各种开发环境模板来快速开始,这也是最简单的做法
模板创建
左下角箭头呼出命令面板,选择
New Dev Container…

选择一个模板,比如说我这里选择了Python

选择之后,你可以直接创建容器,不过还有额外的选项

额外选项就是让你选择安装其他需要的环境或者依赖,我这里什么都不选

之后稍等一会,他就会创建好自动打开

完事之后,打开终端可以发现我们所需要的环境已经都配置好了,之后就像正常开发一样,随便玩

随便写一个Hello world运行

配置文件创建
左下角的两个箭头标志也可以呼出相关的命令面板

另一种方法:
Ctrl+Shift+P
或者F1
打开VS Code命令面板搜索
Dev Containers: Add Dev Container Configuration Files…

然后又是熟悉的自己选环境环节了
选完之后,你的目录会多出一个
.devcontainer
文件夹,里面有个devcontainer.json

配置
devcontainer.json
// For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/alpine { "name": "Alpine",//配置文件的名字 // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile "image": "mcr.microsoft.com/devcontainers/base:alpine-3.19"//选择镜像 //"dockerfile": // Features to add to the dev container. More info: https://containers.dev/features. //"features": {},//这里添加你要的环境 // Use 'forwardPorts' to make a list of ports inside the container available locally. // "forwardPorts": [],//配置端口转发,把容器里的端口转发到本地的端口 // Use 'postCreateCommand' to run commands after the container is created. // "postCreateCommand": "uname -a",//配置容器创建好后执行什么命令 // 如npm install命令,这样就不用自己再跑一边了 // Configure tool-specific properties.可以配置容器里VSCode的扩展 "customizations": { "vscode": { "extensions": ["streetsidesoftware.code-spell-checker"] } }, // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. // "remoteUser": "root" }
你可以通过呼出命令面板搜索
Dev Containers:Configure Container Features…
来添加各种依赖及环境,选择ok后,配置文件的features那一栏会自动的更新

搜索
Reopen in Container
来创建和打开容器,也可以在退出容器后重新打开
退出容器
点击左下角箭头,选择
Close Remote Connection

可以发现VS Code就是远程连接了一个正在运行的Dockers容器,所以就和平常SSH连接到服务器开发差不多
重新打开
确保你的工作目录里有Dev Container的配置文件
搜索
Reopen in Container
来重新打开容器,如果你期间改动过配置文件搜索Rebuild and Reopen
More
查看官方文档以获取更多帮助
Codespace
Codespace是Github推出的一个云端的开发环境,其实它的本质就是一个云端的Dev Container
不过它给的配置很慷慨,直接4核4G起步,然后普通用户每个月据说有60小时的每核心使用时间,这就是说4核的使用时间就要除以4了
如果是教育账户则是180小时
使用
想要使用,非常简单只需要在你的Repo里点击Code按钮,然后选择Codespace,就可以创建一个基于你Repo不同分支的云端开发环境了

然后它其实也可以自己配置各个东西,只要你在你的Repo里添加
.devcontainer/devcontainer.json
然后他就会根据你这配置文件来生成开发环境
之后会打开一个浏览器的VSCode,之后你可以在上面开发了
不过要注意的是,你如果关掉了那个窗口,默认云端的环境会在30分钟没动作后自动停止
以下就是一个停止的Codespace
