diff --git a/java-maven/vibe-enhance-version/.env.example b/java-maven/vibe-enhance-version/.env.example new file mode 100644 index 0000000..87e4699 --- /dev/null +++ b/java-maven/vibe-enhance-version/.env.example @@ -0,0 +1,20 @@ +# ============================================== +# Maven + Java + Bun 开发容器配置模板 +# 使用方法: 复制此文件为 .env 并修改具体值 +# cp .env.example .env +# ============================================== + +# === 端口配置 === +# SSH 连接端口 (宿主机) +SSH_PORT=2222 +# Web 应用端口 (宿主机) +APP_PORT=9090 + +# === 路径配置 === +# 项目源码挂载路径 (本地路径) +PROJECT_DIR=/workspace + +# === 镜像信息 === +IMAGE_NAME=maven-java21-bun-dev +IMAGE_TAG=1.0 +CONTAINER_NAME=maven-devcontainer diff --git a/java-maven/vibe-enhance-version/.gitignore b/java-maven/vibe-enhance-version/.gitignore new file mode 100644 index 0000000..b72f9ba --- /dev/null +++ b/java-maven/vibe-enhance-version/.gitignore @@ -0,0 +1,20 @@ +# === 敏感配置与本地环境 === +.env +.DS_Store + +# === Java/Maven 编译产物 === +target/ +*.class +*.jar +*.war +*.ear +*.log + +# === IDE 配置文件 (可选,视团队规范而定) === +.idea/ +.vscode/ +*.iml +.classpath +.project +.settings/ + diff --git a/java-maven/vibe-enhance-version/Containerfile b/java-maven/vibe-enhance-version/Containerfile new file mode 100644 index 0000000..b27df04 --- /dev/null +++ b/java-maven/vibe-enhance-version/Containerfile @@ -0,0 +1,55 @@ +FROM maven:3.9-eclipse-temurin-21 + +# 1. 优化 APT源 (保持你原有的逻辑,但增加了错误处理的安全性) +# 注意:eclipse-temurin-21 基于 Ubuntu,sources 路径正确 +RUN sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/ubuntu.sources && \ + sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list.d/ubuntu.sources && \ + sed -i 's/http:/https:/g' /etc/apt/sources.list.d/ubuntu.sources + +# 2. 安装基础工具 + SSH Server +#添加 openssh-server, locales, sudo 等开发常用包 +RUN apt-get update && \ + apt-get install -y \ + git curl vim ripgrep unzip netcat-openbsd bash-completion \ + openssh-server locales sudo wget && \ + # 清理缓存以减小镜像体积 + rm -rf /var/lib/apt/lists/* + +# ============================ +# 2. 安装 Bun 和 Opencode +# ============================ +# [关键] 设置 BUN_INSTALL 到 /opt 目录,防止被 /root 挂载卷覆盖 +ENV BUN_INSTALL="/opt/bun" +ENV PATH="$BUN_INSTALL/bin:$PATH" + +# 安装 Bun +RUN curl -fsSL https://bun.sh/install | bash + +# 使用 Bun 安装 opencode +RUN bun install -g opencode-ai + + + + +# 3. 配置 SSH 服务 +RUN mkdir /var/run/sshd && \ + # 允许 root 登录 (Zed 需要连接用户) + sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \ + # 修复 SSH 登录后的环境变量问题 + sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd + + +# 5. 安装 Opencode (Vibe Coding 工具) +# 假设 Opencode 是一个可以通过 curl 下载的二进制文件。 +# 请将下方的 URL 替换为 Opencode 的真实下载链接。 +# 如果 Opencode 是 npm 包,则需要先安装 nodejs。 +# 这里演示二进制安装模式: +# RUN curl -L "https://path/to/opencode-linux-x64" -o /usr/local/bin/opencode && \ +# chmod +x /usr/local/bin/opencode + +# 6. 设置工作目录 +WORKDIR /workspace + +# 7. 配置容器启动命令 +# 启动 SSH 服务并挂起容器 +CMD ["/bin/sh", "-c", "/usr/sbin/sshd -D"] diff --git a/java-maven/vibe-enhance-version/Makefile b/java-maven/vibe-enhance-version/Makefile new file mode 100644 index 0000000..de8f618 --- /dev/null +++ b/java-maven/vibe-enhance-version/Makefile @@ -0,0 +1,62 @@ +# 引用 .env 文件中的变量 +include .env +export $(shell sed 's/=.*//' .env) + +.PHONY: help build up down restart logs shell clean ssh + +# 默认目标:显示帮助 +help: + @echo "🛠️ Maven + Java + Bun 开发环境管理工具" + @echo "==================================================" + @echo "make build - 构建镜像" + @echo "make up - 启动容器 (后台模式)" + @echo "make down - 停止并移除容器" + @echo "make restart - 重启容器" + @echo "make logs - 查看容器日志" + @echo "make shell - 进入容器终端 (Bash)" + @echo "make ssh - 使用 SSH 连接容器 (测试连接)" + @echo "make clean - ⚠️ 深度清理 (移除容器、镜像和挂载的数据目录)" + @echo "==================================================" + @echo "当前配置:" + @echo " SSH端口: $(SSH_PORT)" + @echo " 代码路径: $(PROJECT_DIR)" + +# 构建镜像 +build: + @echo "📦 正在构建镜像 $(IMAGE_NAME):$(IMAGE_TAG)..." + @docker compose build + +# 启动容器 +up: + @echo "🚀 正在启动开发环境..." + @docker compose up -d + @echo "✅ 服务已启动!" + @echo " - SSH 连接: ssh -p $(SSH_PORT) root@localhost (密码: root)" + @echo " - Zed 连接: ssh://root@localhost:$(SSH_PORT)" + +# 停止容器 +down: + @echo "🛑 正在停止容器..." + @docker compose down + +# 重启 +restart: down up + +# 查看日志 +logs: + @docker compose logs -f + +# 进入 Shell (通过 Docker exec) +shell: + @docker exec -it $(CONTAINER_NAME) bash + +# SSH 连接测试 +ssh: + @ssh -p $(SSH_PORT) -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@localhost + +# 深度清理 (危险操作) +clean: down + @echo "⚠️ 正在清理..." + @read -p "确定要删除持久化数据目录 $(DATA_DIR) 吗? [y/N] " ans && [ $${ans:-N} = y ] || (echo "已取消"; exit 1) + @rm -rf $(DATA_DIR) + @echo "🧹 清理完成" diff --git a/java-maven/vibe-enhance-version/compose.yml b/java-maven/vibe-enhance-version/compose.yml new file mode 100644 index 0000000..17c2d68 --- /dev/null +++ b/java-maven/vibe-enhance-version/compose.yml @@ -0,0 +1,17 @@ +services: + maven-dev-env: + image: maven-java21-dev:3.9-ssh + build: + context: . + dockerfile: Containerfile + container_name: maven-devcontainer + hostname: maven-devcontainer + restart: always + ports: + - "${APP_PORT:-9090}:9090" + - "${SSH_PORT:-2322}:22" # [新增] SSH 端口,宿主机通过 localhost:2222 连接 + volumes: + - ${PROJECT_DIR:-/workspace}:/workspace + # 持久化 Root 用户配置(包含 .ssh, .m2 缓存, .config/zed 等) + - /workspace/devcontainer-vols/maven-devcontainer-root:/root +