build(devcontainer): 优化 zsh 配置与 pnpm 环境设置
This commit is contained in:
@@ -73,15 +73,14 @@ USER usr_vscode
|
||||
|
||||
# 配置 Zsh https://github.com/deluan/zsh-in-docker/releases
|
||||
# Default powerline10k theme
|
||||
RUN touch /home/usr_vscode/.zshrc \
|
||||
&& sh -c "$(curl -L -o - https://github.com/deluan/zsh-in-docker/releases/download/v${ZSH_IN_DOCKER_VERSION}/zsh-in-docker.sh)" -- \
|
||||
-p git \
|
||||
-p fzf \
|
||||
-a "source <(fzf --zsh)" \
|
||||
-a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
|
||||
-x \
|
||||
# -a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
|
||||
# -a "source /usr/share/doc/fzf/examples/completion.zsh" \
|
||||
RUN sh -c "$(curl -L -o - https://github.com/deluan/zsh-in-docker/releases/download/v${ZSH_IN_DOCKER_VERSION}/zsh-in-docker.sh)" -- \
|
||||
-p git \
|
||||
-p fzf \
|
||||
-a "source <(fzf --zsh)" \
|
||||
-a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
|
||||
-x \
|
||||
# -a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
|
||||
# -a "source /usr/share/doc/fzf/examples/completion.zsh" \
|
||||
# https://github.com/deluan/zsh-in-docker/blob/55a4e476f78f37204af9dfc0290a92e52cf881b1/zsh-in-docker.sh#L121-L123
|
||||
&& sed -i 's/^export LANG=.*/export LANG="zh_CN.UTF-8"/' /home/usr_vscode/.zshrc \
|
||||
&& sed -i 's/^export LANGUAGE=.*/export LANGUAGE="zh_CN:zh"/' /home/usr_vscode/.zshrc \
|
||||
@@ -95,11 +94,6 @@ RUN touch /home/usr_vscode/.zshrc \
|
||||
# https://pnpm.io/installation#in-a-docker-container
|
||||
RUN wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.zshrc" SHELL="$(which zsh)" zsh - \
|
||||
&& pnpm --version \
|
||||
&& pnpm env use lts --global \
|
||||
&& pnpm config set store-dir /home/usr_vscode/.pnpm-store
|
||||
|
||||
# 安装 AI 工具
|
||||
RUN pnpm install -g \
|
||||
@google/gemini-cli@latest \
|
||||
@anthropic-ai/claude-code@latest \
|
||||
@musistudio/claude-code-router@latest
|
||||
# /home/usr_vscode/.config/pnpm/rc
|
||||
&& pnpm config set store-dir /home/usr_vscode/.pnpm-store \
|
||||
&& pnpm env use lts --global
|
||||
|
||||
@@ -89,13 +89,12 @@
|
||||
},
|
||||
"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}---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,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"
|
||||
],
|
||||
|
||||
/**
|
||||
@@ -113,13 +112,15 @@
|
||||
"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",
|
||||
"fix-node_modules": "sudo chown usr_vscode node_modules;"
|
||||
"fix-node_modules": "sudo chown usr_vscode node_modules"
|
||||
},
|
||||
"updateContentCommand": /* 容器内执行(创建后或内容更新) */ "pnpm install",
|
||||
"postCreateCommand": /* 容器内执行(创建完成后) */ {
|
||||
// pnpm env use lts --global
|
||||
"install-global-cli": "pnpm install -g @google/gemini-cli@latest @anthropic-ai/claude-code@latest @musistudio/claude-code-router@latest"
|
||||
},
|
||||
"updateContentCommand": /* 容器内执行(创建后或内容更新) */ "echo '更新内容...'",
|
||||
"postCreateCommand": /* 容器内执行(创建完成后) */ "pnpm install",
|
||||
"postStartCommand": /* 容器内执行(每次启动) */ "echo '容器已启动!'",
|
||||
"postAttachCommand": /* 容器内执行(每次附加) */ "echo '开发环境已就绪!${containerWorkspaceFolder}'",
|
||||
// "updateRemoteUserUID": true,
|
||||
|
||||
Reference in New Issue
Block a user