124 lines
4.5 KiB
Makefile
124 lines
4.5 KiB
Makefile
# ==========================================
|
|
# Vibe Coding 开发环境快捷管理
|
|
# ==========================================
|
|
|
|
.PHONY: up down restart build shell ssh-init check clean logs zed
|
|
|
|
# 默认变量
|
|
CONTAINER_NAME=vibe-coding-env
|
|
# 从 .env 获取配置,若无则使用默认值
|
|
SSH_KEY_NAME ?= $(shell grep SSH_KEY_NAME .env | cut -d '=' -f2 || echo id_ed25519)
|
|
SSH_PORT ?= $(shell grep SSH_PORT .env | cut -d '=' -f2 || echo 2222)
|
|
|
|
# --- 核心命令 ---
|
|
|
|
# 启动环境
|
|
up:
|
|
@echo "🚀 正在启动 Vibe 环境..."
|
|
docker compose up -d
|
|
@echo "✅ 环境已就绪。"
|
|
|
|
# 停止环境
|
|
down:
|
|
@echo "🛑 正在停止环境..."
|
|
docker compose down
|
|
|
|
# 重启环境
|
|
restart: down up
|
|
|
|
# 重新构建镜像 (当修改了 Dockerfile 或想升级工具时使用)
|
|
build:
|
|
@echo "🛠️ 正在重新构建镜像..."
|
|
docker compose build --no-cache
|
|
docker compose down
|
|
docker compose up -d
|
|
|
|
# --- 连接与交互 ---
|
|
|
|
# 直接通过 Docker 进入交互式 Shell
|
|
shell:
|
|
docker exec -it $(CONTAINER_NAME) zsh
|
|
|
|
# 增强版:自动识别 ED25519 或 RSA 并注入
|
|
ssh-init:
|
|
@echo "🔑 正在同步 SSH 公钥 ($(SSH_KEY_NAME)) 到容器..."
|
|
@if [ -f ~/.ssh/$(SSH_KEY_NAME).pub ]; then \
|
|
cat ~/.ssh/$(SSH_KEY_NAME).pub | docker exec -i vibe-coding-env sh -c "mkdir -p /root/.ssh && cat >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys"; \
|
|
echo "✅ 公钥注入完成。"; \
|
|
else \
|
|
echo "❌ 错误: 未在宿主机 ~/.ssh/ 找到 $(SSH_KEY_NAME).pub"; \
|
|
fi
|
|
|
|
|
|
# 使用 Zed 命令行工具直接打开远程项目
|
|
zed:
|
|
@echo "🎨 正在唤起 Zed 远程开发..."
|
|
zed ssh://root@localhost:$(SSH_PORT)/workspace
|
|
|
|
# --- 维护与自检 ---
|
|
|
|
# 查看运行日志
|
|
logs:
|
|
docker compose logs -f
|
|
|
|
# 环境健康检查:验证 Rust, Bun, AI 工具是否正常
|
|
check:
|
|
@echo "🔍 执行工具自检..."
|
|
@docker exec -it $(CONTAINER_NAME) rustc --version || echo "❌ Rust 未就绪"
|
|
@docker exec -it $(CONTAINER_NAME) go version || echo "❌ Go 未就绪"
|
|
@docker exec -it $(CONTAINER_NAME) bun --version || echo "❌ Bun 未就绪"
|
|
@docker exec -it $(CONTAINER_NAME) aider --version || echo "❌ Aider 未就绪"
|
|
@docker exec -it $(CONTAINER_NAME) opencode version || echo "❌ OpenCode 未就绪"
|
|
@echo "✨ 自检完成!"
|
|
|
|
add-key:
|
|
@$(eval KEY_PATH := $(if $(PUB),$(PUB),$(SSH_PUB_KEY_PATH)))
|
|
@echo "🔑 正在从 $(KEY_PATH) 添加公钥..."
|
|
@if [ -f $(KEY_PATH) ]; then \
|
|
cat $(KEY_PATH) | docker exec -i $(CONTAINER_NAME) sh -c "mkdir -p /root/.ssh && cat >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys"; \
|
|
echo "✅ 公钥已追加。"; \
|
|
else \
|
|
echo "❌ 错误: 找不到文件 $(KEY_PATH)"; \
|
|
fi
|
|
|
|
add-key-str:
|
|
@if [ -z "$(STR)" ]; then \
|
|
echo "❌ 错误: 请提供公钥字符串。"; \
|
|
echo "用法: make add-key-str STR='您的公钥内容'"; \
|
|
else \
|
|
echo "$(STR)" | docker exec -i vibe-coding-env sh -c "mkdir -p /root/.ssh && cat >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys"; \
|
|
echo "✅ 公钥字符串已成功追加到容器。"; \
|
|
fi
|
|
|
|
# 彻底清理 (删除镜像、容器以及所有持久化缓存卷)
|
|
# 警告:这将导致重新下载所有 Rust/Bun 依赖和 Zed Server
|
|
clean:
|
|
@echo "⚠️ 正在执行深度清理..."
|
|
docker compose down -v
|
|
@echo "✨ 清理完毕,环境已重置。"
|
|
|
|
# --- 帮助系统 ---
|
|
help:
|
|
@echo "🚀 Vibe Coding 环境命令行助手"
|
|
@echo ""
|
|
@echo "📋 容器生命周期管理:"
|
|
@echo " make up - 启动环境 (并自动通过 /tmp 注入 .env 中的主密钥)"
|
|
@echo " make down - 停止并移除容器"
|
|
@echo " make restart - 重启容器"
|
|
@echo " make build - 强制重新构建镜像 (不使用缓存)"
|
|
@echo " make clean - 彻底清理 (删除镜像、容器及所有持久化缓存卷)"
|
|
@echo ""
|
|
@echo "🔑 SSH 密钥管理:"
|
|
@echo " make ssh-init - [初始化] 同步宿主机默认公钥到容器"
|
|
@echo " make add-key - [文件导入] 从指定文件添加公钥"
|
|
@echo " 用法: make add-key PUB=~/.ssh/other_key.pub"
|
|
@echo " make add-key-str - [字符串导入] 直接通过粘贴字符串添加公钥"
|
|
@echo " 用法: make add-key-str STR='ssh-ed25519 AAA...'"
|
|
@echo ""
|
|
@echo "💻 开发与调试:"
|
|
@echo " make zed - 通过 Zed 编辑器打开远程项目"
|
|
@echo " make shell - 进入容器内的 ZSH 终端"
|
|
@echo " make check - 检查 Rust, Bun, AI 工具链版本状态"
|
|
@echo " make logs - 查看容器实时运行日志"
|
|
@echo ""
|