You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
88 lines
2.2 KiB
#!/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 |