You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为已附加的VSCode容器在镜像外配置层级创建settings.json与extensions.json

解决方案

方案一:使用ddev内置devcontainer集成(最推荐)

这是最符合官方规范的实现方式,完全满足你将配置存放在项目目录的需求:

  • 进入WSL侧的ddev项目根目录,执行命令:ddev config --devcontainer-enabled=true
  • 执行ddev start启动环境后,ddev会自动在项目根目录生成.devcontainer文件夹,其中的devcontainer.json已经默认适配ddev web容器的运行配置
  • 你可以直接在devcontainer.json的extensions字段里添加需要自动安装的扩展ID,settings字段添加容器级别的VSCode配置
  • 后续直接在项目目录执行code .,VSCode会自动检测到devcontainer配置,提示「在容器中重新打开」,确认后会自动连接到web容器,同时完成扩展安装和配置加载,所有配置都会被识别为devcontainer配置而非工作区配置。

方案二:保留现有ddev code附加逻辑的实现方法

如果你不想改变现有ddev code的使用习惯,可以选择以下两种子方案:

子方案1:附加时指定devcontainer配置路径

调整你的ddev code命令生成的启动参数,在调用code命令时指定本地项目的devcontainer配置路径,修改后的命令参考:

code --folder-uri="vscode-remote://attached-container+<你的web容器十六进制标识>/var/www/html" --remote-containers.devcontainer-path=${PWD}/.devcontainer/devcontainer.json

VSCode附加容器时会自动读取你项目目录下的devcontainer配置,自动完成扩展安装和配置应用。

子方案2:通过ddev钩子预配置容器环境

你可以通过ddev的post-start钩子,在容器启动时直接把扩展和配置预置到容器内的VSCode服务器目录中,不需要修改附加命令:

  1. 打开项目下的.ddev/config.yaml,添加以下钩子配置:
hooks:
  post-start:
    - exec: |
        # 创建VSCode服务器配置目录
        mkdir -p ~/.vscode-server/data/Machine
        # 写入容器级VSCode配置
        cat > ~/.vscode-server/data/Machine/settings.json << 'EOF'
        {
          "php.suggest.basic": false,
          "editor.tabSize": 2,
          // 你需要的其他配置
        }
        EOF
        # 预安装指定扩展
        for ext in "bmewburn.vscode-intelephense-client" "dbaeumer.vscode-eslint" "EditorConfig.EditorConfig"; do
          code --install-extension $ext --no-sandbox --user-data-dir ~/.vscode-server >/dev/null 2>&1 || true
        done
  1. 重新执行ddev restart生效,后续每次容器启动都会自动预置配置和扩展,你用原来的ddev code命令附加后直接就能用。

之前你在容器内执行code --install-extension报错是因为缺少运行参数,加上--no-sandbox和--user-data-dir指定VSCode服务器目录就可以正常执行。

内容的提问来源于stack exchange,提问作者Grevil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:45:03