用Docker Dev Container/Codespace实现免配置开发环境自由
摘要
Dev Container是利用Docker容器技术,实现开发环境的一致性和持久化。开发者可以配置容器环境,挂载本机目录,实现数据持久化。可以通过VS Code创建和管理Dev Container,配置文件devcontainer.json可以自定义环境和设置。
这个东西都不陌生,大名鼎鼎的虚拟容器化技术使开发者们部署应用到不同的环境中不再有这样的烦恼:
欸?明明在我的机器可以正常,为什么在你的机器上就各种报错?
Docker的容器不仅仅可以用来运行应用,还可以用来配置一致的开发环境
但是运行一个容器,当容器停止运行之后,所有的修改都会消失
这个问题可以通过挂载来解决,我们把本机中的一个目录挂载到正在运行的容器中,然后把这期间要保存的数据都放在挂载目录下,就可以实现数据持久化

Dev Container其实就是利用这样的一个原理,开发者们可以自己配置容器的环境,然后把自己的工作目录挂载到容器中,这样就可以实现本机啥都没装,但是应用可以在容器中正常运行
这样你就可以通过创建不同的Dev Container而实现无缝切换各种开发环境
前提条件
安装VS Code
安装Docker 18.06+
创建Dev Container
想创建一个Dev Container可以通过微软官方提供的各种开发环境模板来快速开始,这也是最简单的做法
模板创建
左下角箭头呼出命令面板,选择New Dev Container…

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

选择之后,你可以直接创建容器,不过还有额外的选项,额外选项就是让你选择安装其他需要的环境或者依赖
之后稍等一会,他就会创建好自动打开
完事之后,打开终端可以发现我们所需要的环境已经都配置好了,之后就像正常开发一样,随便玩


配置文件创建
Ctrl+Shift+P或者F1打开VS Code命令面板
搜索Dev Containers: Add Dev Container Configuration Files…
然后又是熟悉的自己选环境环节了
选完之后,你的目录会多出一个.devcontainer文件夹,里面有个devcontainer.json
配置devcontainer.json
更多配置项,详见Dev Container metadata reference (containers.dev)
重新打开Dev Container
确保你的工作目录里有Dev Container的配置文件
Ctrl+Shift+P或者F1打开VS Code命令面板
搜索Reopen in Container打开容器,如果你期间改动过配置文件搜索Rebuild and Reopen
退出容器
点击左下角箭头,选择Close Remote Connection
可以发现VS Code就是远程连接了一个正在运行的Dockers容器,所以就和平常SSH连接到服务器开发差不多
GitHub Codespace
Codespace是Github推出的一个云端的开发环境,其实它的本质就是一个云端的Dev Container
而且它给的配置很慷慨,直接4核4G起步
使用
想要使用,非常简单只需要在你的Repo里点击Code按钮,然后选择Codespace,就可以创建一个基于你Repo不同分支的云端开发环境了

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

