如果你正在构建生产型ML系统,开发容器是VS Code的杀手级功能。开发容器让你在Docker容器中获得完整的VS Code功能。如果生产是一个Docker容器,这让你可以统一你的开发和生产环境。但即使你的目标不是Docker部署,在容器中运行你的代码也可以防止你在开发机器上与本地Python环境作斗争:如果你正确配置你的开发容器,它对你团队的每个成员的工作都是完全一样的。
在这篇文章中,我将让你快速了解开发容器在 VS Code 中是如何工作的,这样你就可以自己尝试一下。还有其他的方法,但对于基本的工作流程,我推荐几样东西:
- 在根目录下有一个
Dockerfile,用来定义开发容器 - 一个配置文件,在
.devcontainer/devcontainer.json - 你需要的任何项目文件
这意味着,对于一个新的项目,文件夹结构将看起来像下面这样。
.
├── .devcontainer
│ └── devcontainer.json
├── Dockerfile
├── LICENSE
├── README.md
├── main.py
├── requirements-dev.txt
└── requirements.txt
Dockerfile 可以非常灵活。通常情况下,你会想要安装依赖项,除非你的Docker镜像已经安装了它们。这里有一个非常基本的,你可以用它来开始。
FROM python:3.9
COPY requirements.txt .
RUN pip install requirements.txt
devcontainer.json 文件也是高度可定制的,但有几件事是特别重要的。
- 构建定义
- VS Code的工作区设置(如Python解释器的路径、使用的interter等)。
- 要使用的扩展
- 在容器中运行的额外命令
下面是一个基本的devcontainer.json 的样子。
{
"name": "Python 3",
"build": {
"dockerfile": "../Dockerfile",
},
// Set *default* container specific settings.json values on container create.
"settings": {
"python.pythonPath": "/usr/local/bin/python",
"python.languageServer": "Pylance",
"python.linting.enabled": true,
"python.formatting.blackPath": "/usr/local/bin/black",
"python.formatting.provider": "black",
"editor.formatOnSave": true,
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance"
],
"postCreateCommand": "pip install -r requirements-dev.txt"
}
一旦你在VS Code会话中设置了这些文件,你就可以在容器中打开这个项目。用F1 打开命令调色板,并运行Remote-Containers: Open Folder in Container... 从那里,你可以打开一个终端并运行你的代码。
注意,如果你把print("hello world") 修改为print('hello world') (有一个单引号),Black会在保存时自动为你修改它。很好!