抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

我们的开发过程,谁还不是依然需要先安装一堆环境(编译器、库等等),然后才能进行开发。如果我们恰好还需要开发各种语言、各种应用,那光是繁杂的环境就足以把电脑搞的乱糟糟。更何况,大多数语言会拥有很多版本,而且版本之间兼容性不佳(例如Python),在自己电脑上安装多个版本的python有时候已经让人血压升高,何况我还要记得哪个版本在哪,哪个版本的库在哪,不同的版本用的是哪一个包管理器等等繁琐的细节……

Docker 镜像。团队成员只需要加载这个 Dev Container,就可以获得和其他人完全一致的开发环境。

devcontainer.json是Dev Container的配置文件,用于定义开发容器的设置和环境。它通常用于与Visual Studio Code的Dev Containers扩展一起使用,以创建一致的开发环境。一般常用于Github CodeSpace和Gitpod等平台初始化容器使用。

创建devcontainer.json和Dockerfile、docker-compose.yaml文件。

以下文件放在 .devcontainer文件夹中,不推荐放置在根目录。

devcontainer.json是vscode对容器的配置文件,里面存放了要启动或构建的镜像、要附带安装的vscode插件、创建后执行的命令等一系列信息。

Dockerfile中描述了我们特定项目需要的容器应该怎么构建。虽然可以直接使用一个官方镜像开发,但是最好还是做一些定制化,构建项目个性化的镜像。

docker-compose.yaml中指定了镜像应该如何运行。

devcontainer.json常用配置

具体配置请看containers.dev

  1. 容器名称
{
  "name": "Hexo开发环境",
}
  1. 容器镜像
    这里使用的其实就是docker镜像,所以只要是docker镜像即可.默认是Docker Hub的源,在填写Docker Hub的镜像时,可以忽略镜像地址,直接写镜像名称。
{
  "image": "mcr.microsoft.com/devcontainers/universal:2", // 微软镜像
  // "image": "spurin/hexo", 默认docker hub
}
  1. 微软镜像
    博客微软镜像id
  2. 微软社区镜像
  3. 端口转发
{
  "forwardPorts": [
    4000, // 直接指定端口,将会把远程4000端口转发到本地4000
    "db:5432", // 指定服务端口,将会把远程db服务的5432端口转发到本地5432
    "4000:4001" // 修改转发端口,将会把远程4000端口转发到本地4001
  ]
}
  1. 设置端口属性
{
  "portsAttributes": {
    "端口号": {
      "属性名": "属性值",
    }
  }
}

请看Port attributes 端口属性

  1. 设置环境变量
    可以使用的内置环境列表
// 此环境变量应用于整个容器的生命周期
{
  "containerEnv": {
    "环境变量名":"变量值"
  }
}
// 此环境变量应用于连接容器直到断开的生命周期
{
  "remoteEnv": {
    "环境变量名":"变量值"
  }
}
  1. 添加容器环境
    通过 features属性能往主容器中添加附加的容器,主要用于设置开发环境等,例如下面的例子,添加flutter环境
{
  "features": {
    "ghcr.io/jarrodcolburn/features/flutter-sdk:0": {
      "release ":"3.7.1"
    }
  },
}

主要设置的就是容器的id,和容器提供的属性选项.完整的容器列表参见containers.dev

  1. ide配置文件
    因为大部分ide都能连接远程容器,而他们的配置不能通用,customizations属性实现了对不同的ide进行专属配置的能力,这里仅写vscode官方文档
{
  "customizations": {
    "vscode": {
      // vscode设置,可以查询网络,或者直接复本地制vscode的配置
      "settings": {},
      // 插件,填
      入插件id即可
      "extensions": []
    }
  }
}

博客查看vscode插件id
博客查看vscode插件id2

关于hexo的示例配置

{
  "name": "Hexo开发环境",
  "image": "spurin/hexo",
  "forwardPorts": [
    "4000"
  ],
  "customizations": {
    "vscode": {
      "settings": {
        "editor.inlineSuggest.enabled": true
      },
      "extensions": [
      ]
    }
  }
}

docker-compose.yaml

Docker-Compose 入门到精通 (图解+秒懂+史上最全) - 疯狂创客圈 - 博客园

Dockerfile

万字长文带你看全网最详细Dockerfile教程-腾讯云开发者社区-腾讯云

构建环境

第一次打开容器的情况下会自动进行构建.
如果后来对容器配置进行了修改,可以用 Ctrl+Shift+p快速打开命令面板,输入 dev container rebuild,选择搜索出来的选项进行重新构建打开:

参考文章

Dev Container
使用Dev Container开发

评论