在前两期中,我们了解了 Dev Container 的概念并快速搭建了一个基于预定义镜像的开发环境。这次,我们将更进一步,探索如何通过自定义配置打造一个完全符合项目需求的 Dev Container。本篇将以一个 Python 项目为例,带你学习配置文件的核心字段、使用 Dockerfile 定制镜像,并配置开发工具。
一、为什么要自定义 Dev Container?
预定义镜像(如 Node.js 或 Python 的官方镜像)虽然方便,但往往无法完全满足特定项目的需求。比如:
- 需要安装额外的系统工具(例如
git
或curl
)。 - 项目依赖特定版本的语言运行时。
- 需要集成调试器、linter 或格式化工具。
通过自定义配置,我们可以精确控制容器内的环境,确保它既高效又实用。
二、准备一个 Python 项目
我们将创建一个简单的 Python Web 项目作为示例。
-
创建项目文件夹
在本地新建一个文件夹(比如custom-dev-container
),并进入:mkdir custom-dev-container cd custom-dev-container
-
初始化 Python 项目
创建一个基本的 Flask 应用。运行以下命令:python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install flask
创建
app.py
:from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello from Custom Dev Container!' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
三、添加并自定义 Dev Container 配置
1. 生成基础配置
- 使用 VS Code 打开项目文件夹(
code .
)。 - 按
Ctrl+Shift+P
,选择 “Dev Containers: Reopen in Container”。 - 选择 “Python 3”(推荐最新版本,如 Python 3.11),VS Code 会生成
.devcontainer/devcontainer.json
。
默认的 devcontainer.json
可能如下:
{
"name": "Python 3",
"image": "mcr.microsoft.com/vscode/devcontainers/python:3.11",
"forwardPorts": [5000],
"postCreateCommand": "pip install --user -r requirements.txt"
}
2. 使用 Dockerfile 自定义镜像
预定义镜像可能缺少一些工具(比如 git
或 make
),我们可以通过 Dockerfile 创建一个自定义镜像。
在 .devcontainer
文件夹下创建 Dockerfile
:
# 从官方 Python 镜像开始
FROM python:3.11-slim
# 安装系统依赖
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
# 设置工作目录
WORKDIR /workspaces/custom-dev-container
# 安装项目依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
创建 requirements.txt
(在项目根目录):
flask==2.3.3
修改 devcontainer.json
,使用自定义 Dockerfile:
{
"name": "Custom Python Dev Container",
"build": {
"dockerfile": "Dockerfile",
"context": ".."
},
"forwardPorts": [5000],
"postCreateCommand":