forked from admin/hair-keeper
本次更新包含以下主要改进: ## 新功能 - 添加quickstart.sh脚本帮助用户快速使用模板项目 - 添加simple_deploy.sh便于部署 - 新增院系管理功能(DeptAdmin),支持增删改查院系管理员信息 - 用户可以在header中切换管理的院系 - 添加zustand全局状态管理 - 添加DEFAULT_USER_PASSWORD环境变量,作为创建用户时的默认密码 - 添加p-limit库和DB_PARALLEL_LIMIT环境变量控制数据库批次操作并发数 ## 安全修复 - 修复Next.js CVE-2025-66478漏洞 - 限制只有超级管理员才能创建超级管理员用户 ## 开发环境优化 - 开发终端兼容云端环境 - MinIO客户端直传兼容云端环境 - 开发容器增加vim和Claude Code插件 - 编程代理改用Claude - docker-compose.yml添加全局name属性 ## Bug修复与代码优化 - 删除用户时级联删除SelectionLog - 手机端关闭侧边栏后刷新页面延迟调整(300ms=>350ms) - instrumentation.ts移至src内部以适配生产环境 - 删除部分引发类型错误的无用代码 - 优化quickstart.sh远程仓库推送相关配置 ## 文件变更 - 新增49个文件,修改多个配置和源代码文件 - 重构用户管理模块目录结构 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
143 lines
4.2 KiB
Docker
143 lines
4.2 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
# 设置环境变量
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
NODE_VERSION=22.14.0 \
|
|
PYTHON_VERSION=3.12 \
|
|
CODE_SERVER_VERSION=4.96.2 \
|
|
LANG=C.UTF-8 \
|
|
LC_ALL=C.UTF-8 \
|
|
TZ=Asia/Shanghai \
|
|
DEV_PASSWORD=clouddev
|
|
|
|
# 安装基础工具和依赖
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
wget \
|
|
git \
|
|
openssh-server \
|
|
tmux \
|
|
tree \
|
|
pwgen \
|
|
zip \
|
|
unzip \
|
|
net-tools \
|
|
fontconfig \
|
|
ffmpeg \
|
|
ca-certificates \
|
|
gnupg \
|
|
lsb-release \
|
|
build-essential \
|
|
libssl-dev \
|
|
zlib1g-dev \
|
|
libbz2-dev \
|
|
libreadline-dev \
|
|
libsqlite3-dev \
|
|
libncursesw5-dev \
|
|
xz-utils \
|
|
tk-dev \
|
|
libxml2-dev \
|
|
libxmlsec1-dev \
|
|
libffi-dev \
|
|
liblzma-dev \
|
|
ttyd \
|
|
cmake \
|
|
telnet \
|
|
redis-tools \
|
|
iputils-ping \
|
|
potrace \
|
|
imagemagick \
|
|
zsh \
|
|
vim \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# 安装 Python 3.12
|
|
RUN apt-get update && apt-get install -y software-properties-common && \
|
|
add-apt-repository ppa:deadsnakes/ppa && \
|
|
apt-get update && \
|
|
apt-get install -y python3.12 python3.12-venv python3.12-dev python3-pip && \
|
|
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \
|
|
update-alternatives --install /usr/bin/python python /usr/bin/python3.12 1 && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# 安装 Node.js 22.14
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
|
|
apt-get install -y nodejs && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# 安装 pnpm
|
|
RUN npm install -g pnpm
|
|
|
|
# 安装 uv (Python package manager)
|
|
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
|
|
# 安装 oh-my-zsh
|
|
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
|
|
|
# 设置 zsh 为默认 shell
|
|
RUN chsh -s $(which zsh)
|
|
|
|
# 配置 zsh
|
|
RUN echo 'export ZSH="$HOME/.oh-my-zsh"' > /root/.zshrc && \
|
|
echo 'ZSH_THEME="robbyrussell"' >> /root/.zshrc && \
|
|
echo 'plugins=(git node npm docker python)' >> /root/.zshrc && \
|
|
echo 'source $ZSH/oh-my-zsh.sh' >> /root/.zshrc && \
|
|
echo '' >> /root/.zshrc && \
|
|
echo '# 添加 uv 到 PATH' >> /root/.zshrc && \
|
|
echo 'export PATH="$HOME/.local/bin:$PATH"' >> /root/.zshrc
|
|
|
|
# 安装 MinIO Client (mc)
|
|
RUN wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc && \
|
|
chmod +x /usr/local/bin/mc
|
|
|
|
# 安装 code-server
|
|
RUN curl -fsSL https://code-server.dev/install.sh | sh -s -- --version=${CODE_SERVER_VERSION}
|
|
|
|
# 安装 npm 全局包
|
|
RUN npm install -g \
|
|
@anthropic-ai/claude-code \
|
|
@musistudio/claude-code-router
|
|
|
|
# 创建工作目录
|
|
RUN mkdir -p /workspace /root/.local/share/code-server/User
|
|
|
|
# 配置 SSH
|
|
RUN mkdir -p /var/run/sshd && \
|
|
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
|
|
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
|
|
|
|
# 安装 code-server 插件
|
|
RUN code-server --install-extension ms-ceintl.vscode-language-pack-zh-hans \
|
|
&& code-server --install-extension bierner.markdown-mermaid \
|
|
&& code-server --install-extension ms-python.python \
|
|
&& code-server --install-extension dbaeumer.vscode-eslint \
|
|
&& code-server --install-extension prisma.prisma \
|
|
&& code-server --install-extension ecmel.vscode-html-css \
|
|
&& code-server --install-extension cweijan.vscode-redis-client \
|
|
&& code-server --install-extension anthropic.claude-code
|
|
|
|
# 配置 code-server (密码将在启动时设置)
|
|
RUN mkdir -p /root/.config/code-server && \
|
|
echo 'bind-addr: 0.0.0.0:8080' > /root/.config/code-server/config.yaml && \
|
|
echo 'auth: password' >> /root/.config/code-server/config.yaml && \
|
|
echo 'cert: false' >> /root/.config/code-server/config.yaml
|
|
|
|
# 配置 tmux
|
|
RUN echo 'set -g mouse on' > /root/.tmux.conf && \
|
|
echo 'set -g history-limit 10000' >> /root/.tmux.conf && \
|
|
echo 'set -g default-terminal "screen-256color"' >> /root/.tmux.conf
|
|
|
|
# 复制启动脚本
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
# 暴露端口
|
|
# 22: SSH
|
|
# 8080: code-server
|
|
# 7681: ttyd
|
|
# 3000: Next.js dev server
|
|
EXPOSE 22 8080 7681 3000
|
|
|
|
WORKDIR /workspace
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"] |