build.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/bin/bash
  2. # Docker 镜像构建脚本
  3. # 使用方法: ./build.sh [选项]
  4. IMAGE_NAME="eh-downloader"
  5. TAG="latest"
  6. DOCKERFILE="Dockerfile"
  7. # 显示帮助信息
  8. show_help() {
  9. echo "Docker 镜像构建脚本"
  10. echo ""
  11. echo "使用方法: $0 [选项]"
  12. echo ""
  13. echo "选项:"
  14. echo " -n, --name NAME 镜像名称 (默认: $IMAGE_NAME)"
  15. echo " -t, --tag TAG 镜像标签 (默认: $TAG)"
  16. echo " -f, --file FILE Dockerfile 路径 (默认: $DOCKERFILE)"
  17. echo " --no-cache 构建时不使用缓存"
  18. echo " -h, --help 显示此帮助信息"
  19. echo ""
  20. echo "示例:"
  21. echo " $0 # 使用默认配置构建"
  22. echo " $0 -n myapp -t v1.0 # 指定名称和标签"
  23. echo " $0 --no-cache # 不使用缓存构建"
  24. }
  25. # 解析命令行参数
  26. while [[ $# -gt 0 ]]; do
  27. case $1 in
  28. -n|--name)
  29. IMAGE_NAME="$2"
  30. shift 2
  31. ;;
  32. -t|--tag)
  33. TAG="$2"
  34. shift 2
  35. ;;
  36. -f|--file)
  37. DOCKERFILE="$2"
  38. shift 2
  39. ;;
  40. --no-cache)
  41. NO_CACHE="--no-cache"
  42. shift
  43. ;;
  44. -h|--help)
  45. show_help
  46. exit 0
  47. ;;
  48. *)
  49. echo "❌ 未知选项: $1"
  50. show_help
  51. exit 1
  52. ;;
  53. esac
  54. done
  55. # 检查 Dockerfile 是否存在
  56. if [ ! -f "$DOCKERFILE" ]; then
  57. echo "❌ Dockerfile 不存在: $DOCKERFILE"
  58. exit 1
  59. fi
  60. echo "🚀 开始构建 Docker 镜像..."
  61. echo "📦 镜像: $IMAGE_NAME:$TAG"
  62. echo "📄 Dockerfile: $DOCKERFILE"
  63. echo "⏰ 开始时间: $(date)"
  64. # 执行构建命令
  65. docker build $NO_CACHE -t $IMAGE_NAME:$TAG -f $DOCKERFILE .
  66. # 检查构建结果
  67. if [ $? -eq 0 ]; then
  68. echo ""
  69. echo "✅ 镜像构建成功!"
  70. echo "📊 镜像信息:"
  71. docker images | grep $IMAGE_NAME
  72. echo ""
  73. echo "🎯 下一步操作:"
  74. echo " 1. 使用 docker-compose up 启动服务"
  75. echo " 2. 或者使用 docker run -p 8000:8000 -v ./data:/app/data $IMAGE_NAME:$TAG 运行容器"
  76. else
  77. echo "❌ 镜像构建失败!"
  78. exit 1
  79. fi