vscode远程容器开发

之前在折腾HomeAssistant集成开发时接触到了VSCode的容器内开发,即使用容器构建开发环境,简化不同机器的开发环境的部署,确保团队环境一直,同时也方便了后修的测试。果然Docker是越用越爽。

再加上vscode的远程ssh连接模式,可以在不同的机器上统一连接到家中的服务器上,再使用这台机器去构建Docker容器,确保可在任意电脑上仅需安装vscode,就可以拥有统一的开发环境,这里就以hexo为例,记录下踩的那些坑。

插件安装

一共两个
Remote Development
DEV containers

配置建立

项目根目录下创建.devcontiner文件夹,然后是devcontiner.json配置文件,这里详细的配置参照containers.dev的文档,下面贴出这里使用的配置

{
    "name": "Hexo blog",
    "dockerFile": "Dockerfile",
    "appPort": 4000,
    "containerUser": "node",
    "extensions": [
    ],
    "shutdownAction": "stopContainer",
    "postCreateCommand": "npm install;hexo s",
    "runArgs": [
        "--network=nginxproxynet",
        "--net-alias=hexoDev"
    ]
}
FROM node:lts
RUN npm install -g hexo-cli

这里在运行参数里配置了网络和别名,方便之后做反代,但后来发现不需要,vscode自带了一个功能,可以映射容器内的任意端口到本机(也就是vscode运行的机器,不是Docker服务器),猜测是用ssh隧道实现的。
这里有几个坑要注意,

  • 注意容器内用户和外部项目文件的用户一致,很多容器默认是root用户,我这里外面项目的用管理员账户,这会导致权限混乱,所以这里配置了"containerUser": "node"node是这个镜像的默认管理员用户id为1000
  • 创建容器后,内部的git没有复制外部的私钥,导致私有仓库无法上传,所以这里git下载和提交还是在容器外进行的
  • "appPort": 4000,这里指的docker自身的端口映射,但默认vscode是只映射到127.0.0.1上,远程访问还是不方便,而且这里修改local port hostallInterfaces在远程容器内也是无效的,具体看这个issues

vscode远程容器开发
https://www.kuanmi.top/2022/11/10/vscode-remote-containers/
作者
KuanMi
发布于
2022年11月10日
许可协议