devcontainer.json

未匹配的标注

Remote - Containers 插件支持2种基本的操作模型:

1、把容器作为你的全功能开发环境

2、连接一个运行中的容器来查看容器内部

一起学Docker12:如何在容器中实现远程开发一文中,已经展示了如何基于一个完全配置好的范例镜像,进行开发,并运行的例子。不过范例镜像仅仅是用来做例子的,它很可能并不能满足你的开发需要。这种情况下,就只能打造自己的 Docker 开发容器了。

VS Code Remote - Containers 插件让你能够把 Docker 容器当作全功能的开发环境使用。它能够让你打开容器中的任何一个文件夹,也可以让你打开容器中的任何一个代码仓库。同时可以使用 VS Code 的全部功能。项目中的 devcontainer.json 文件告诉 VS Code 如何访问或创建一个,拥有量身定做的工具和运行时工作栈的开发容器。这个容器可以基于一个代码库来运行应用,也可以用来把代码库所需的工具,库,运行时,抽离出来。

创建开发容器的步骤

1、创建一个 devcontainer.json 文件,文件描述了 VS Code 如何启动容器,以及启动之后要做什么。

2、通过 Dockerfile 做一些修改,并且持久化到开发容器中,比如安装新软件。

3、通过 Docker Compose 配置多个容器。

4、做了修改之后,构建开发容器,以确保所作的修改能够生效。

每一个步骤做完之后,你都有一个全功能的开发容器,你既可以继续下一步来添加更多的功能,也可以基于当前的开发环境开始工作。

注意:如果你打开一个本地项目的话,Remote - Containers 插件有一个 Add Development Container Configuration Files… 命令。

这个命令可以让你从一个列表中,挑选一个预先定义好的容器配置。如果你更倾向于马上获取一个完整的开发容器,而不是一步一步构建 devcontainer.json 和 Dockerfile 的话,你可以直接去看《开发容器创建自动化》一文。

我们今天先来看看第一步:创建 devcontainer.json 文件。

VS Code 的容器配置存放在 devcontainer.json 文件中。这个文件类似用来做调试配置的 launch.json 文件,不过它专门用来启动或连接你的开发容器。开发容器配置既可以放在项目根路径的 .devcontainer/devcontainer.json 文件中,也可以放在项目根路径的 .devcontainer.json 文件中。

你可以把镜像放在 devcontainer.json 文件的开头。镜像就好比是一个迷你硬盘,上面预装了各种工具和操作系统。你可以从容器注册表上把镜像拉下来。而容器注册表又是一群存储了镜像的仓库。下面是 devcontainer.json 文件的小例子,它使用一个预构建的, TypeScript 和 Node.js 的 VS Code 开发容器镜像,来自于知名的容器注册表 Docker Hub:

你可以通过修改配置来完成这些任务:

1、在容器中安装其它工具,比如 Git。

2、自动安装插件。

3、转发或发布额外的端口。

4、设置运行时参数。

5、复用或扩展现有的 Docker Compose 设置。

6、添加高级的容器配置。

就我们的例子而言,如果你想要在容器中,安装 ESLint 插件,并且自动转发 3000 端口的话,可以这样来配置 devcontainer.json 文件:

顺便提一下,图中的 dbaeumer.vscode-eslint 是 ESLint 插件的 ID,怎样知道某个插件的 ID 是多少呢?你可以在 vscode 中的插件面板中,搜索你想安装的插件,比如我们搜索 ESLint 。然后点击我们找到的插件,可以在右侧的 Identifier 处找到这个插件的 ID。

你也可以在 VS Code 的 Marketplace 网站,找到插件并访问插件对应的页面,在右侧找到插件的 ID 。

有了 devcontainer.json 文件之后,你的开发容器就可以运作了,你可以连接容器,并且开始在容器内部进行开发。尝试运行 Remote-Containers: Reopen in Container 命令。

运行这个命令之后,VS Code 会重新启动,之后,你就身处一个 Node.js 和 TypeScript 的开发容器之中了。同时容器的 3000 端口还做了转发,容器内部 ESLint 插件也安装好了。要判断自己是否已经连接开发容器,仍旧使用状态栏左侧的绿色远端指示器来判断:

其它开发容器场景

通过 devcontainer.json 文件,你还可以:

1、启动一个独立容器来隔离你的工具链,或者来加速开发的设置工作。

2、基于部署了应用的容器进行开发,这个应用通过镜像,Dockerfile 或 Docker Compose 进行定义。

3、从开发容器内部使用 Docker 或 Kubernetes 来构建和部署应用。

如果 devcontainer.json 所支持的工作流程不满足你的需求,你也可以连接一个运行中的容器。

以上,就是教程的第1步:创建 devcontainer.json 文件的所有内容了。欢迎关注,评论或私信。我们下一期,不见不散。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
秦晓武
讨论数量: 0
发起讨论 只看当前版本


暂无话题~