Files
hair-keeper/.cloud-dev/entrypoint.sh

74 lines
1.9 KiB
Bash

#!/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