#!/bin/bash # ============================================ # 文件持久化:通过符号链接将零碎文件持久化到命名卷 # ============================================ PERSIST_DIR="/root/.hair-keeper-persist" PERSIST_FILES=( "/root/.claude.json" "/root/.zsh_history" "/root/.bash_history" ) mkdir -p "$PERSIST_DIR" for filepath in "${PERSIST_FILES[@]}"; do filename=$(basename "$filepath") persist_path="$PERSIST_DIR/$filename" # 如果原路径是真实文件(非符号链接),迁移到持久化目录 if [ -f "$filepath" ] && [ ! -L "$filepath" ]; then mv "$filepath" "$persist_path" fi # 确保持久化目录中存在该文件 [ -f "$persist_path" ] || touch "$persist_path" # 创建符号链接 ln -sf "$persist_path" "$filepath" done # 设置默认密码 DEV_PASSWORD=${DEV_PASSWORD:-clouddev} # 设置 root 密码 echo "root:${DEV_PASSWORD}" | chpasswd # 确保 code-server 配置目录存在 mkdir -p /root/.local/share/code-server # 创建 code-server 配置文件 cat > /root/.config/code-server/config.yaml << EOF bind-addr: 0.0.0.0:8080 auth: password password: ${DEV_PASSWORD} cert: false EOF # 启动 SSH 服务 echo "Starting SSH service..." service ssh start # 启动 code-server echo "Starting code-server on port 8080..." code-server --bind-addr 0.0.0.0:8080 /workspace & # 输出服务信息 echo "" echo "==========================================" echo "Cloud Development Container Started" echo "==========================================" echo "SSH: Port 22 (user: root, password: ${DEV_PASSWORD})" echo "Code Server: Port 8080 (password: ${DEV_PASSWORD})" echo "Next.js Dev: Port 3000 (run 'pnpm run dev' to start)" echo "==========================================" echo "" echo "Workspace: /workspace" echo "Default Shell: zsh with oh-my-zsh" echo "" echo "提示: 可通过环境变量 DEV_PASSWORD 自定义密码" echo "" # 保持容器运行 tail -f /dev/null