Dev Containers 是 VS Code 官方功能,将完整开发环境(运行时、工具链、依赖等)打包进 Docker 容器,代码在本地编辑、命令在容器内执行,实现环境一致;通过 devcontainer.json 和 Dockerfile 配置,支持多容器协作与 CI 对齐。

用 VS Code Dev Containers,团队成员能直接在容器里写代码,环境配置一次,到处可用,彻底告别“在我机器上是好的”这类问题。
什么是 Dev Containers
Dev Containers 是 VS Code 提供的官方功能,它把整个开发环境(包括运行时、工具链、依赖库、甚至 IDE 配置)打包进 Docker 容器。你编辑的代码仍在本地文件系统,但所有命令(如 npm install、python -m pytest、make build)都在容器内执行,完全隔离宿主机环境。
关键点:不是远程连接服务器,也不是单纯跑个服务容器;它是“带完整开发工具链的可复现工作区”。
快速上手三步走
打开你的项目文件夹 → 按 Ctrl+Shift+P(或 Cmd+Shift+P)→ 输入 “Dev Containers: Add Development Container Configuration Files…” → 选择基础镜像(如 Node.js 18、Python 3.11、Go 1.22 等)→ VS Code 自动生成 .devcontainer/devcontainer.json 和 Dockerfile。
CRMEB打通版是一款全开源支持免费商用的PHP 多语言商城系统;CRMEB技术团队历经6年时间匠心之作!系统采用前后端分离技术,基于TP6+Uni-app框架开发;客户移动端采用uni-app开发,管理后台前端使用iviewUI开发。系统支持微信公众号端、微信小程序端、H5端、PC端多端账号同步,可快速打包生成APP;赋能开发者,减少重复造轮子;系统支持自动检查安装环境一键安装部署,使用简单方便
- devcontainer.json 定义容器行为:启动命令、端口转发、扩展推荐、挂载选项等
- Dockerfile(可选但推荐)用于自定义基础镜像:装特定 CLI 工具、设环境变量、复制私有证书等
- 配置完后,按 Ctrl+Shift+P → “Dev Containers: Reopen in Container”,VS Code 自动构建并进入容器环境
让环境真正一致的关键细节
光有容器还不够,要避免“看似一样、实则不同”的陷阱:
-
固定镜像标签:别用
node:latest,改用node:18.19.0-bullseye-slim或 SHA256 摘要,防止基础镜像静默更新导致行为差异 -
统一 UID/GID:在 devcontainer.json 中设置
"remoteUser": "vscode"并确保容器内用户与本地文件权限兼容,避免 npm 全局安装报错或 git 权限拒绝 -
预装常用扩展:通过
"customizations.vscode.extensions"字段声明必需扩展(如 ESLint、Prettier、Python),新成员首次打开即自动安装 -
共享配置文件:把
.editorconfig、.prettierrc、settings.json(放在 .devcontainer/ 下)一并纳入版本管理,格式和提示规则不因人而异
进阶:多服务协作与 CI 对齐
真实项目常涉及数据库、缓存、消息队列等依赖。Dev Containers 支持 docker-compose.yml 驱动多容器协作:
- 在 .devcontainer/docker-compose.yml 中定义 backend、postgres、redis 等服务
- VS Code 启动时自动 up 整套栈,并把 backend 容器作为主开发容器,其他服务自动链接
- CI 流水线(如 GitHub Actions)可复用同一组 Dockerfile 和 compose 文件,实现“开发即部署”的最小差异路径
这样,本地调试时连的是容器内的 Postgres,CI 构建测试时也连同个镜像版本的 Postgres,数据类型、扩展支持、默认配置全都对得上。









