Files
devcontainers/vibe-dev/Makefile
enoch 635d113b4f 添加 kilocode 容器支持和通用 Docker 配置
- 添加 kilocode devcontainer 配置
- 新增 Fedora 和 Ubuntu Dockerfile
- 添加构建自动化 (Makefile, compose.yml)
- 配置环境变量管理 (.env, .env.example)
2025-12-25 00:28:15 +08:00

122 lines
4.4 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 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) 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 ""