File size: 3,640 Bytes
d1c6f20 73d8ed7 a657b7a 04913c1 011a344 04913c1 27cebb8 cd07ada 73d8ed7 1e37ab7 992d635 9845156 992d635 4efdb6b 992d635 690cf67 013b43e 690cf67 73d8ed7 f73de5f c60294c f73de5f 07ebf4f c179283 cd07ada 07ebf4f 73d8ed7 690cf67 ac52f25 73d8ed7 ac52f25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | FROM codercom/code-server:latest
# 设置默认工作区
ENV DEFAULT_WORKSPACE=/home/coder/workspace
USER root
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
# 安装常用工具
RUN apt-get update && \
apt-get install -y \
vim \
htop \
curl \
wget \
git \
zip \
unzip \
jq \
iputils-ping \
python3 \
python3-pip \
openjdk-21-jdk-headless \
maven \
sudo && \
rm -rf /var/lib/apt/lists/*
# 切换官方市场(使用 jq 向 product.json 追加 extensionsGallery 字段)
RUN jq '. += { \
"extensionsGallery": { \
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery", \
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index", \
"itemUrl": "https://marketplace.visualstudio.com/items", \
"controlUrl": "", \
"recommendationsUrl": "" \
} \
}' /usr/lib/code-server/lib/vscode/product.json > /tmp/product.json \
&& mv /tmp/product.json /usr/lib/code-server/lib/vscode/product.json
# 指定 Go 版本号
ARG GO_VERSION=1.25.1
RUN wget -q https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz && \
tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz && \
rm go${GO_VERSION}.linux-amd64.tar.gz
USER coder
# 将 Go 路径追加到 coder 用户的 .bashrc
RUN echo 'export PATH=/usr/local/go/bin:$PATH' >> /home/coder/.bashrc
# 安装 nvm + node(使用官方安装脚本)
# 注意:必须在 coder 用户下安装 nvm,因为 nvm 是用户级工具
RUN mkdir -p /home/coder/.nvm
# 安装 nvm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && \
echo 'export NVM_DIR="$HOME/.nvm"' >> /home/coder/.bashrc && \
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /home/coder/.bashrc && \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> /home/coder/.bashrc
# 安装最新 LTS Node.js(可选:也可指定版本如 `nvm install 18`)
RUN bash -c "source /home/coder/.nvm/nvm.sh && nvm install --lts && nvm alias default node"
# 配置 ll 别名 + 启用彩色 ls
RUN echo "alias ll='ls -alF'" >> /home/coder/.bashrc && \
echo "alias ls='ls --color=auto'" >> /home/coder/.bashrc
# 安装 VS Code 扩展
RUN code-server --install-extension ms-python.python && \
code-server --install-extension golang.go && \
code-server --install-extension tencent-cloud.coding-copilot
# 创建默认 README.md
RUN mkdir -p "$DEFAULT_WORKSPACE" && \
echo "# 开发环境说明" > "$DEFAULT_WORKSPACE/README.md" && \
echo "" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "本环境已预装以下工具:" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "- **code-server**: Web版 VS Code" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "- **Node.js (LTS)**: 通过 nvm 管理" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "- **Python 3 & pip**" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "- **Go (Golang)**: Go 开发环境" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "- **Java (Java)**: Java 开发环境" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "- **Git, Vim, curl, wget** 等常用命令行工具" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "" >> "$DEFAULT_WORKSPACE/README.md" && \
echo "时区已设置为 \`Asia/Shanghai\`。" >> "$DEFAULT_WORKSPACE/README.md"
# 设置默认打开工作区
WORKDIR $DEFAULT_WORKSPACE
EXPOSE 18080
ENTRYPOINT []
CMD ["sh", "-c", "code-server --bind-addr 0.0.0.0:18080 --auth password $DEFAULT_WORKSPACE"] |