humanus.cpp/.devops/scripts/start-dev.sh

90 lines
2.8 KiB
Bash
Raw Normal View History

2025-03-23 14:35:54 +08:00
#!/bin/sh
# 脚本路径
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# 项目根目录
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
echo "=== Humanus.cpp 开发环境启动脚本 ==="
echo "项目根目录: $PROJECT_ROOT"
# 确保在项目根目录执行
cd "$PROJECT_ROOT" || { echo "无法进入项目根目录"; exit 1; }
# 确保脚本有执行权限
chmod +x .devops/scripts/*.sh
# 检查网络连接
echo "正在检查网络连接..."
if ! ping -c 1 -W 1 auth.docker.io > /dev/null 2>&1; then
echo "警告: 无法连接到Docker认证服务器可能会导致EOF错误"
echo "推荐解决方案:"
echo "1. 检查Docker Desktop设置中的DNS配置"
echo "2. 添加Docker镜像加速器"
echo "3. 检查网络连接和代理设置"
echo ""
echo "是否继续尝试构建? (可能会失败)"
read -p "继续构建? (y/n): " CONTINUE_BUILD
if [ "$CONTINUE_BUILD" != "y" ] && [ "$CONTINUE_BUILD" != "Y" ]; then
echo "构建已取消"
exit 1
fi
fi
# 提供使用备用构建选项
echo "选择构建方式:"
echo "1. 标准构建 (docker-compose build)"
echo "2. 使用--no-cache选项 (适用于之前构建失败)"
echo "3. 使用host网络构建 (适用于网络问题)"
read -p "请选择构建方式 [1-3默认1]: " BUILD_OPTION
BUILD_OPTION=${BUILD_OPTION:-1}
# 构建Docker镜像
echo "正在构建Docker镜像多阶段构建..."
case $BUILD_OPTION in
1)
docker-compose -f .devops/docker-compose.yml build
;;
2)
docker-compose -f .devops/docker-compose.yml build --no-cache
;;
3)
docker-compose -f .devops/docker-compose.yml build --build-arg BUILDKIT_INLINE_CACHE=1 --network=host
;;
*)
echo "无效选项,使用标准构建"
docker-compose -f .devops/docker-compose.yml build
;;
esac
# 检查构建结果
if [ $? -ne 0 ]; then
echo "构建失败!请查看错误信息。"
echo "如果看到EOF错误请参考 .devops/DOCKER_README.md 中的网络问题解决方案。"
exit 1
fi
# 启动容器
echo "正在启动开发容器..."
docker-compose -f .devops/docker-compose.yml up -d
# 显示容器状态
echo "容器状态:"
docker-compose -f .devops/docker-compose.yml ps
echo ""
echo "开发环境已启动。所有依赖包括Node.js和npm已预装在镜像中。"
echo ""
echo "您可以使用以下命令进入容器:"
echo "docker-compose -f .devops/docker-compose.yml exec humanus bash"
echo ""
echo "要停止环境,请使用:"
echo "docker-compose -f .devops/docker-compose.yml down"
echo ""
# 询问是否进入容器
read -p "是否立即进入容器? (y/n): " ENTER_CONTAINER
if [ "$ENTER_CONTAINER" = "y" ] || [ "$ENTER_CONTAINER" = "Y" ]; then
echo "进入容器..."
docker-compose -f .devops/docker-compose.yml exec humanus bash
fi