From be9093fa77eb6ef9199b8287d689fc42988443cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E6=B5=A9?= Date: Sat, 8 Nov 2025 17:14:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(devcontainer):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8C=82=E8=BD=BD=E5=8D=B7=E5=91=BD=E5=90=8D=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=AE=B9=E5=99=A8=E5=91=BD=E4=BB=A4=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .devcontainer/devcontainer.json | 46 +++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0c73811..5ca4e58 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -89,27 +89,41 @@ }, "remoteUser": "usr_vscode", "mounts": [ - "source=${localWorkspaceFolderBasename}-bashhistory,target=/commandhistory,type=volume", - "source=${localWorkspaceFolderBasename}-lingma,target=/home/usr_vscode/.lingma,type=volume", - "source=${localWorkspaceFolderBasename}-gemini,target=/home/usr_vscode/.gemini,type=volume", - "source=${localWorkspaceFolderBasename}-claude-code-router,target=/home/usr_vscode/.claude-code-router,type=volume", - "source=${localWorkspaceFolderBasename}-claude-code-config,target=/home/usr_vscode/.claude,type=volume", - "source=${localWorkspaceFolderBasename}-pnpm-store,target=/home/usr_vscode/.pnpm-store,type=volume", - "source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume" + "source=${localWorkspaceFolderBasename}--bashhistory,target=/commandhistory,type=volume", + "source=${localWorkspaceFolderBasename}--lingma,target=/home/usr_vscode/.lingma,type=volume", + "source=${localWorkspaceFolderBasename}--gemini,target=/home/usr_vscode/.gemini,type=volume", + "source=${localWorkspaceFolderBasename}--claude-code-router,target=/home/usr_vscode/.claude-code-router,type=volume", + "source=${localWorkspaceFolderBasename}--claude-code-config,target=/home/usr_vscode/.claude,type=volume", + "source=${localWorkspaceFolderBasename}--pnpm-store,target=/home/usr_vscode/.pnpm-store,type=volume", + "source=${localWorkspaceFolderBasename}--node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume" ], - "postCreateCommand": { - "安装依赖": "sudo chown usr_vscode node_modules; pnpm install", + + /** + * 执行顺序总结 + 1. initializeCommand (本地主机) + 2. 容器创建 + 3. onCreateCommand (容器内,仅首次) + 4. updateContentCommand (容器内) + 5. postCreateCommand (容器内) + 6. 容器启动 + 7. postStartCommand (容器内,每次启动) + 8. VS Code 附加到容器 + 9. postAttachCommand (容器内,每次附加) + */ + "initializeCommand": /* 本地执行(容器创建前) */ "echo '准备创建容器...'", + "onCreateCommand": /* 容器内执行(仅首次创建) */ { "fix-claude-code-router": "sudo chown -R usr_vscode /home/usr_vscode/.claude-code-router", "fix-lingma": "sudo chown -R usr_vscode /home/usr_vscode/.lingma", "fix-claude": "sudo chown -R usr_vscode /home/usr_vscode/.claude", - "fix-gemini": "sudo chown -R usr_vscode /home/usr_vscode/.gemini" - }, // 容器创建后执行 https://code.visualstudio.com/remote/advancedcontainers/improve-performance - "postStartCommand": { - "node version": "node -v" - }, // 每次容器启动时执行 - "postAttachCommand": "echo 容器已连接: ${containerWorkspaceFolder}", // 连接到容器后执行 + "fix-gemini": "sudo chown -R usr_vscode /home/usr_vscode/.gemini", + "fix-node_modules": "sudo chown usr_vscode node_modules;" + }, + "updateContentCommand": /* 容器内执行(创建后或内容更新) */ "echo '更新内容...'", + "postCreateCommand": /* 容器内执行(创建完成后) */ "pnpm install", + "postStartCommand": /* 容器内执行(每次启动) */ "echo '容器已启动!'", + "postAttachCommand": /* 容器内执行(每次附加) */ "echo '开发环境已就绪!${containerWorkspaceFolder}'", // "updateRemoteUserUID": true, - "waitFor": "postStartCommand", + "waitFor": "updateContentCommand", "workspaceMount": "source=${localWorkspaceFolder},target=/wrkspc,type=bind,consistency=delegated", "workspaceFolder": "/wrkspc" }