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 PNPM_HOME="/home/usr_vscode/.local/share/pnpm"
ARG PATH="$PNPM_HOME:$PATH"
ARG TZ=Asia/Shanghai
# 环境变量
ENV LANG=zh_CN.UTF-8 \
LC_ALL=zh_CN.UTF-8 \
TZ=${TZ} \
# Set `DEVCONTAINER` environment variable to help with orientation
DEVCONTAINER=true \
# Set the default shell to zsh rather than sh
@@ -73,14 +75,21 @@ USER usr_vscode
# 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 \
-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 \
&& 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
# -a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
# -a "source /usr/share/doc/fzf/examples/completion.zsh" \
# 安装 pnpm 和 Node.js
# https://pnpm.io/installation#in-a-docker-container

View File

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