VSCode Dev Containers 提供基于容器的标准化本地开发环境,通过配置 devcontainer.json、使用命令面板启动、自定义 Dockerfile、挂载源码同步及端口转发调试五步实现与生产一致的隔离可复现环境。
如果您希望在本地开发中快速启动一个与生产环境一致、隔离且可复现的开发环境,则 vscode dev containers 提供了一种基于容器的标准化方案。以下是实现该目标的具体操作路径:
本文运行环境:MacBook Pro,macOS Sequoia。
一、配置 devcontainer.json 文件
此步骤用于定义容器的运行时配置,包括基础镜像、预装工具、端口映射及初始化命令等,是 Dev Containers 正常工作的核心配置文件。
1、在项目根目录下创建 .devcontainer 文件夹。
2、在该文件夹内新建 devcontainer.json 文件。
3、填入标准配置,例如指定 mcr.microsoft.com/vscode/devcontainers/python:3.11 作为基础镜像。
4、在 configuration 属性中添加 extensions 数组,写入 ms-python.python 等必需扩展 ID。
二、使用命令面板启动容器
VSCode 提供图形化入口以触发容器构建与连接流程,无需手动执行 Docker 命令,降低使用门槛。
1、按 Cmd+Shift+P(macOS)打开命令面板。
2、输入并选择 Dev Containers: Reopen in Container。
3、等待 VSCode 自动拉取镜像、构建容器、安装扩展并重启窗口。
4、确认左下角状态栏显示 Dev Container 标识及容器名称。
三、从 Dockerfile 构建自定义环境
当预置镜像无法满足项目依赖要求时,可通过本地 Dockerfile 精确控制运行时组件,例如添加特定版本的 CMake 或私有 CA 证书。
1、在 .devcontainer 目录下创建 Dockerfile 文件。
Miller (mlr) 是一个命令行工具,用于查询、整形和重新格式化名称索引数据,如 CSV、TSV、JSON 和 JSON Lines。它将 awk、sed、cut、join 和 sort 的功能整合到一个专为结构化数据处理而构建的单一工具中。
2、在 devcontainer.json 中将 image 属性替换为 build 对象,并设置 context 和 dockerfile 路径。
3、在 Dockerfile 中使用 FROM 指令继承官方 devcontainer 基础层,例如 FROM mcr.microsoft.com/vscode/devcontainers/base:ubuntu-22.04。
4、追加 RUN apt-get update && apt-get install -y libpq-dev 等定制指令。
四、挂载本地源码并启用自动同步
确保容器内编辑的代码实时反映在宿主机上,同时支持容器外的 Git 操作与 IDE 功能无缝衔接。
1、确认 devcontainer.json 中未禁用 mount 配置,默认已启用工作区挂载。
2、检查 workspaceMount 属性是否设置为 "type=bind,source=${localWorkspaceFolder},target=/workspace,consistency=cached"。
3、在容器内执行 git status,验证输出与宿主机一致。
4、在容器内修改任意 .py 文件并保存,观察宿主机对应文件时间戳即时更新。
五、调试容器内进程并转发端口
使宿主机可访问容器中运行的服务(如 Flask 开发服务器),并支持 VSCode 内置调试器直接附加到容器内进程。
1、在 devcontainer.json 的 forwardPorts 数组中添加 5000。
2、启动服务前,在 launch.json 中配置 type 为 python,request 为 launch,并将 port 设置为 5000。
3、运行调试配置,确认浏览器可访问 http://localhost:5000。
4、检查 VSCode 调试面板是否显示正在运行的 Python 进程及断点命中状态。

















