feat: 更新 Dockerfile 和 devcontainer.json
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -2,5 +2,6 @@ packages:
|
||||
- 'packages/*'
|
||||
|
||||
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 ???
|
||||
|
||||
Reference in New Issue
Block a user