#!/bin/bash # Docker 镜像构建脚本 # 使用方法: ./build.sh [选项] IMAGE_NAME="eh-downloader" TAG="latest" DOCKERFILE="Dockerfile" # 显示帮助信息 show_help() { echo "Docker 镜像构建脚本" echo "" echo "使用方法: $0 [选项]" echo "" echo "选项:" echo " -n, --name NAME 镜像名称 (默认: $IMAGE_NAME)" echo " -t, --tag TAG 镜像标签 (默认: $TAG)" echo " -f, --file FILE Dockerfile 路径 (默认: $DOCKERFILE)" echo " --no-cache 构建时不使用缓存" echo " -h, --help 显示此帮助信息" echo "" echo "示例:" echo " $0 # 使用默认配置构建" echo " $0 -n myapp -t v1.0 # 指定名称和标签" echo " $0 --no-cache # 不使用缓存构建" } # 解析命令行参数 while [[ $# -gt 0 ]]; do case $1 in -n|--name) IMAGE_NAME="$2" shift 2 ;; -t|--tag) TAG="$2" shift 2 ;; -f|--file) DOCKERFILE="$2" shift 2 ;; --no-cache) NO_CACHE="--no-cache" shift ;; -h|--help) show_help exit 0 ;; *) echo "❌ 未知选项: $1" show_help exit 1 ;; esac done # 检查 Dockerfile 是否存在 if [ ! -f "$DOCKERFILE" ]; then echo "❌ Dockerfile 不存在: $DOCKERFILE" exit 1 fi echo "🚀 开始构建 Docker 镜像..." echo "📦 镜像: $IMAGE_NAME:$TAG" echo "📄 Dockerfile: $DOCKERFILE" echo "⏰ 开始时间: $(date)" # 执行构建命令 docker build $NO_CACHE -t $IMAGE_NAME:$TAG -f $DOCKERFILE . # 检查构建结果 if [ $? -eq 0 ]; then echo "" echo "✅ 镜像构建成功!" echo "📊 镜像信息:" docker images | grep $IMAGE_NAME echo "" echo "🎯 下一步操作:" echo " 1. 使用 docker-compose up 启动服务" echo " 2. 或者使用 docker run -p 8000:8000 -v ./data:/app/data $IMAGE_NAME:$TAG 运行容器" else echo "❌ 镜像构建失败!" exit 1 fi