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

这个东西都不陌生，大名鼎鼎的虚拟容器化技术使开发者们部署应用到不同的环境中不再有这样的烦恼：欸？明明在我的机器可以正常，为什么在你的机器上就各种报错？ 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 // 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 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不同分支的云端开发环境了 CodeSpace 然后它其实也可以自己配置各个东西，只要你在你的Repo里添加.devcontainer/devcontainer.json 然后他就会根据你这配置文件来生成开发环境之后会打开一个浏览器的VSCode，之后你可以在上面开发了不过要注意的是，你如果关掉了那个窗口，默认云端的环境会在30分钟没动作后自动停止在VS Code里打开