add build script
This commit is contained in:
56
rebuild.sh
Normal file
56
rebuild.sh
Normal file
@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 使用说明
|
||||
usage() {
|
||||
echo "Usage: $0 <DIR> [VER] [save]"
|
||||
echo ""
|
||||
echo " DIR - Dockerfile 所在目录路径 (必需)"
|
||||
echo " VER - 镜像版本号 (可选, 默认: 1.0.0)"
|
||||
echo " save - 是否保存为 tar 文件 (可选)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 检查 DIR 参数
|
||||
if [ -z "$1" ]; then
|
||||
echo "Error: 缺少 DIR 参数"
|
||||
usage
|
||||
fi
|
||||
|
||||
DIR="$1"
|
||||
VER="${2:-1.0.0}"
|
||||
SAVE="$3"
|
||||
|
||||
# 检查目录是否存在
|
||||
if [ ! -d "$DIR" ]; then
|
||||
echo "Error: 目录不存在: $DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 从目录路径提取文件夹名作为镜像名
|
||||
DIR_NAME=$(basename "$DIR")
|
||||
NAME="timi/${DIR_NAME}"
|
||||
|
||||
echo "==> 构建镜像: ${NAME}:${VER}"
|
||||
echo "==> Dockerfile 路径: ${DIR}"
|
||||
|
||||
# 删除已存在的同名镜像 (忽略错误)
|
||||
if docker image inspect "${NAME}:${VER}" > /dev/null 2>&1; then
|
||||
echo "==> 删除已存在的镜像: ${NAME}:${VER}"
|
||||
docker rmi "${NAME}:${VER}" || true
|
||||
fi
|
||||
|
||||
# 构建镜像
|
||||
echo "==> 开始构建..."
|
||||
docker build -t "${NAME}:${VER}" "$DIR"
|
||||
|
||||
echo "==> 构建完成: ${NAME}:${VER}"
|
||||
|
||||
# 如果指定 save 参数,保存镜像为 tar
|
||||
if [ "$SAVE" = "save" ]; then
|
||||
TAR_FILE="${DIR_NAME}.tar"
|
||||
echo "==> 保存镜像为: ${TAR_FILE}"
|
||||
docker save -o "$TAR_FILE" "${NAME}:${VER}"
|
||||
echo "==> 保存完成: ${TAR_FILE}"
|
||||
fi
|
||||
Reference in New Issue
Block a user