149 lines
3.8 KiB
Bash
Executable File
149 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Docker镜像构建脚本 (支持阿里云加速)
|
|
|
|
set -e
|
|
|
|
echo "=== 文件传输服务 Docker 构建脚本 ==="
|
|
echo
|
|
|
|
# 默认配置
|
|
IMAGE_NAME="fileshare"
|
|
TAG="latest"
|
|
DOCKERFILE="Dockerfile"
|
|
USE_ALIYUN="false"
|
|
PUSH_TO_REGISTRY="false"
|
|
REGISTRY=""
|
|
|
|
# 解析命令行参数
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--aliyun)
|
|
USE_ALIYUN="true"
|
|
DOCKERFILE="Dockerfile.multi"
|
|
echo "✅ 启用阿里云镜像加速"
|
|
shift
|
|
;;
|
|
--name)
|
|
IMAGE_NAME="$2"
|
|
shift 2
|
|
;;
|
|
--tag)
|
|
TAG="$2"
|
|
shift 2
|
|
;;
|
|
--push)
|
|
PUSH_TO_REGISTRY="true"
|
|
shift
|
|
;;
|
|
--registry)
|
|
REGISTRY="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
echo "使用方法: $0 [选项]"
|
|
echo
|
|
echo "选项:"
|
|
echo " --aliyun 使用阿里云镜像加速"
|
|
echo " --name IMAGE 指定镜像名称 (默认: fileshare)"
|
|
echo " --tag TAG 指定镜像标签 (默认: latest)"
|
|
echo " --push 构建后推送到镜像仓库"
|
|
echo " --registry URL 指定镜像仓库地址"
|
|
echo " -h, --help 显示帮助信息"
|
|
echo
|
|
echo "示例:"
|
|
echo " $0 # 基础构建"
|
|
echo " $0 --aliyun # 使用阿里云加速"
|
|
echo " $0 --name myapp --tag v1.0.0"
|
|
echo " $0 --aliyun --push --registry registry.cn-hangzhou.aliyuncs.com/myname"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "❌ 未知选项: $1"
|
|
echo "使用 $0 --help 查看帮助"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# 完整镜像名
|
|
FULL_IMAGE_NAME="${REGISTRY:+$REGISTRY/}${IMAGE_NAME}:${TAG}"
|
|
|
|
echo "📋 构建配置:"
|
|
echo " - 镜像名称: $FULL_IMAGE_NAME"
|
|
echo " - Dockerfile: $DOCKERFILE"
|
|
echo " - 阿里云加速: $USE_ALIYUN"
|
|
echo " - 推送镜像: $PUSH_TO_REGISTRY"
|
|
echo
|
|
|
|
# 检查Dockerfile是否存在
|
|
if [ ! -f "$DOCKERFILE" ]; then
|
|
echo "❌ Dockerfile不存在: $DOCKERFILE"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查Docker是否运行
|
|
if ! docker info >/dev/null 2>&1; then
|
|
echo "❌ Docker未运行或无权限访问"
|
|
exit 1
|
|
fi
|
|
|
|
# 构建镜像
|
|
echo "🔨 开始构建镜像..."
|
|
echo
|
|
|
|
if [ "$USE_ALIYUN" = "true" ]; then
|
|
# 使用阿里云加速构建
|
|
docker build \
|
|
--file "$DOCKERFILE" \
|
|
--tag "$FULL_IMAGE_NAME" \
|
|
--build-arg PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ \
|
|
--build-arg PIP_TRUSTED_HOST=mirrors.aliyun.com \
|
|
--progress=plain \
|
|
.
|
|
else
|
|
# 标准构建
|
|
docker build \
|
|
--file "$DOCKERFILE" \
|
|
--tag "$FULL_IMAGE_NAME" \
|
|
--progress=plain \
|
|
.
|
|
fi
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo
|
|
echo "✅ 镜像构建成功: $FULL_IMAGE_NAME"
|
|
|
|
# 显示镜像信息
|
|
echo
|
|
echo "📊 镜像信息:"
|
|
docker images "$FULL_IMAGE_NAME" --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.CreatedSince}}"
|
|
|
|
# 推送镜像
|
|
if [ "$PUSH_TO_REGISTRY" = "true" ]; then
|
|
echo
|
|
echo "📤 推送镜像到仓库..."
|
|
docker push "$FULL_IMAGE_NAME"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ 镜像推送成功"
|
|
else
|
|
echo "❌ 镜像推送失败"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo
|
|
echo "🚀 运行命令:"
|
|
echo " docker run -d -p 8000:8000 --name fileshare $FULL_IMAGE_NAME"
|
|
echo
|
|
echo "🐳 或使用docker-compose:"
|
|
if [ "$USE_ALIYUN" = "true" ]; then
|
|
echo " docker-compose -f docker-compose.aliyun.yml up -d"
|
|
else
|
|
echo " docker-compose up -d"
|
|
fi
|
|
|
|
else
|
|
echo "❌ 镜像构建失败"
|
|
exit 1
|
|
fi |