feat(devcontainer): add enhanced Maven development environment with Java 21, Bun, and SSH support

- Add Docker Compose configuration for Maven + Java 21 development container
- Include SSH server support for remote development (Zed editor compatible)
- Install Bun package manager and opencode-ai for enhanced development workflow
- Provide Makefile with commands for build, up, down, restart, logs, shell, ssh, and clean
- Add .env.example template for configurable ports and paths
- Include .gitignore for Java/Maven artifacts and IDE files
- Configure USTC mirrors for faster package installation
- Support persistent volume mounting for root user configuration (.ssh, .m2 cache)
This commit is contained in:
2025-12-27 00:43:28 +08:00
parent b250a3693b
commit 3f6384325a
5 changed files with 174 additions and 0 deletions

View File

@@ -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 "🧹 清理完成"