VS Code中的开发容器的快速入门指南

654 阅读2分钟

如果你正在构建生产型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会在保存时自动为你修改它。很好!