用Docker Dev Container/Codespace实现免配置开发环境自由
Docker

用Docker Dev Container/Codespace实现免配置开发环境自由

🐳
享受配置环境一下午,最后产出一个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.)
  • 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…
notion image
选择一个模板,比如说我这里选择了Python
notion image
选择之后,你可以直接创建容器,不过还有额外的选项
notion image
额外选项就是让你选择安装其他需要的环境或者依赖,我这里什么都不选
notion image
之后稍等一会,他就会创建好自动打开
notion image
完事之后,打开终端可以发现我们所需要的环境已经都配置好了,之后就像正常开发一样,随便玩
notion image
随便写一个Hello world运行
notion image

配置文件创建

左下角的两个箭头标志也可以呼出相关的命令面板
notion image
另一种方法:
Ctrl+Shift+P或者F1打开VS Code命令面板
搜索Dev Containers: Add Dev Container Configuration Files…
notion image
然后又是熟悉的自己选环境环节了
选完之后,你的目录会多出一个.devcontainer文件夹,里面有个devcontainer.json
notion image
配置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 Container metadata reference (containers.dev)
你可以通过呼出命令面板搜索Dev Containers:Configure Container Features…
来添加各种依赖及环境,选择ok后,配置文件的features那一栏会自动的更新
notion image
搜索Reopen in Container来创建和打开容器,也可以在退出容器后重新打开
notion image

退出容器

点击左下角箭头,选择Close Remote Connection
notion image
可以发现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不同分支的云端开发环境了
notion image
然后它其实也可以自己配置各个东西,只要你在你的Repo里添加.devcontainer/devcontainer.json
然后他就会根据你这配置文件来生成开发环境
之后会打开一个浏览器的VSCode,之后你可以在上面开发了
不过要注意的是,你如果关掉了那个窗口,默认云端的环境会在30分钟没动作后自动停止
以下就是一个停止的Codespace
你也可以选择在本地打开,不过要先装一个插件
你也可以选择在本地打开,不过要先装一个插件