feat: 更新 Dockerfile 和 devcontainer.json
All checks were successful
CI/CD Pipeline / playwright (push) Successful in 2m25s
CI/CD Pipeline / build-and-deploy (push) Successful in 2m32s

This commit is contained in:
严浩
2025-11-08 02:51:05 +08:00
parent 3170fe889b
commit ccf61ee6c3
3 changed files with 37 additions and 14 deletions

View File

@@ -9,10 +9,12 @@ ARG GIT_DELTA_VERSION=0.18.2
ARG ZSH_IN_DOCKER_VERSION=1.2.1 ARG ZSH_IN_DOCKER_VERSION=1.2.1
ARG PNPM_HOME="/home/usr_vscode/.local/share/pnpm" ARG PNPM_HOME="/home/usr_vscode/.local/share/pnpm"
ARG PATH="$PNPM_HOME:$PATH" ARG PATH="$PNPM_HOME:$PATH"
ARG TZ=Asia/Shanghai
# 环境变量 # 环境变量
ENV LANG=zh_CN.UTF-8 \ ENV LANG=zh_CN.UTF-8 \
LC_ALL=zh_CN.UTF-8 \ LC_ALL=zh_CN.UTF-8 \
TZ=${TZ} \
# Set `DEVCONTAINER` environment variable to help with orientation # Set `DEVCONTAINER` environment variable to help with orientation
DEVCONTAINER=true \ DEVCONTAINER=true \
# Set the default shell to zsh rather than sh # Set the default shell to zsh rather than sh
@@ -73,14 +75,21 @@ USER usr_vscode
# Default powerline10k theme # Default powerline10k theme
RUN touch /home/usr_vscode/.zshrc \ 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)" -- \ && 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 git \
-p fzf \ -p fzf \
-a "source <(fzf --zsh)" \ -a "source <(fzf --zsh)" \
-a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \ -a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
-x \ -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 \
&& sed -i 's/^export LC_ALL=.*/export LC_ALL="zh_CN.UTF-8"/' /home/usr_vscode/.zshrc \
# >>>>>
&& echo "" >> /home/usr_vscode/.zshrc \
&& echo "alias gemini='gemini --yolo -m gemini-2.5-pro'" >> /home/usr_vscode/.zshrc \
&& echo "alias claude='claude --dangerously-skip-permissions'" >> /home/usr_vscode/.zshrc && echo "alias claude='claude --dangerously-skip-permissions'" >> /home/usr_vscode/.zshrc
# -a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
# -a "source /usr/share/doc/fzf/examples/completion.zsh" \
# 安装 pnpm 和 Node.js # 安装 pnpm 和 Node.js
# https://pnpm.io/installation#in-a-docker-container # https://pnpm.io/installation#in-a-docker-container

View File

@@ -14,7 +14,7 @@
"build": { "build": {
"dockerfile": "Dockerfile", "dockerfile": "Dockerfile",
"args": { "args": {
"TZ": "${localEnv:TZ:Asia/Shanghai}" //
} }
}, },
"runArgs": [ "runArgs": [
@@ -60,7 +60,7 @@
"terminal.integrated.defaultProfile.linux": "zsh", "terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.profiles.linux": { "terminal.integrated.profiles.linux": {
"bash": { "path": "bash", "icon": "terminal-bash" }, "bash": { "path": "bash", "icon": "terminal-bash" },
"zsh": { "path": "zsh", "icon": "terminal-debian" } "zsh": { "path": "zsh", "icon": "terminal-debian", "overrideName": true }
}, },
// https://stackoverflow.com/questions/75708866/vscode-dev-container-fails-to-load-ms-vscode-js-debug-extension-correctly // https://stackoverflow.com/questions/75708866/vscode-dev-container-fails-to-load-ms-vscode-js-debug-extension-correctly
@@ -83,18 +83,31 @@
"ANTHROPIC_BASE_URL": "${localEnv:ANTHROPIC_BASE_URL}", "ANTHROPIC_BASE_URL": "${localEnv:ANTHROPIC_BASE_URL}",
"GEMINI_API_KEY": "${localEnv:GEMINI_API_KEY}", "GEMINI_API_KEY": "${localEnv:GEMINI_API_KEY}",
"GOOGLE_GEMINI_BASE_URL": "${localEnv:GOOGLE_GEMINI_BASE_URL}", "GOOGLE_GEMINI_BASE_URL": "${localEnv:GOOGLE_GEMINI_BASE_URL}",
"NODE_OPTIONS": "--max-old-space-size=4096",
"CLAUDE_CONFIG_DIR": "/home/usr_vscode/.claude", "CLAUDE_CONFIG_DIR": "/home/usr_vscode/.claude",
"NODE_OPTIONS": "--max-old-space-size=4096" "TZ": "${localEnv:TZ:Asia/Shanghai}"
}, },
"remoteUser": "usr_vscode", "remoteUser": "usr_vscode",
"mounts": [ "mounts": [
"source=${localWorkspaceFolderBasename}-bashhistory,target=/commandhistory,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}-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}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume"
], ],
"postCreateCommand": "sudo chown usr_vscode node_modules", // 容器创建后执行 https://code.visualstudio.com/remote/advancedcontainers/improve-performance "postCreateCommand": {
"postStartCommand": "pnpm -v; echo '${localWorkspaceFolderBasename}'", // 每次容器启动时执行 "安装依赖": "sudo chown usr_vscode node_modules; pnpm install",
// "postAttachCommand": "pnpm config get store-dir", // 连接到容器后执行 "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}", // 连接到容器后执行
// "updateRemoteUserUID": true, // "updateRemoteUserUID": true,
"waitFor": "postStartCommand", "waitFor": "postStartCommand",
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated", "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated",

View File

@@ -2,5 +2,6 @@ packages:
- 'packages/*' - 'packages/*'
useNodeVersion: 24.11.0 # https://pnpm.io/zh/settings#usenodeversion useNodeVersion: 24.11.0 # https://pnpm.io/zh/settings#usenodeversion
shamefullyHoist: true # https://pnpm.io/zh/settings#shamefullyhoist # shamefullyHoist: false # https://pnpm.io/zh/settings#shamefullyhoist
# https://pnpm.io/zh/settings#node-mirror ??? # https://pnpm.io/zh/settings#node-mirror ???