修改安装脚本

This commit is contained in:
flowshadow
2025-10-17 01:13:24 +08:00
parent 8dfa6029ac
commit e71b7dee69
2 changed files with 36 additions and 53 deletions

View File

@@ -1,14 +1,16 @@
#!/bin/bash
# Docker 镜像构建和推送脚本
# 使用方法: ./build_and_push.sh [推送标志] [镜像标签]
# Docker amd64 镜像构建脚本
# 使用方法:
# ./build_amd64.sh # 仅构建
# ./build_amd64.sh push # 构建并推送
set -e # 遇到错误立即退出
set -e
# 配置变量
IMAGE_NAME="shokku"
REGISTRY="ccr.ccs.tencentyun.com" # 替换为您的仓库地址
NAMESPACE="miaogai" # 替换为您的命名空间
REGISTRY="ccr.ccs.tencentyun.com"
NAMESPACE="miaogai"
DOCKERFILE="Dockerfile"
BUILD_CONTEXT="."
@@ -19,58 +21,38 @@ TAG=${2:-"latest"}
# 完整的镜像地址
FULL_IMAGE_NAME="${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${TAG}"
echo "=== Docker 镜像构建和推送 ==="
echo "=== Docker amd64 镜像构建 ==="
echo "镜像名称: ${FULL_IMAGE_NAME}"
echo "Dockerfile: ${DOCKERFILE}"
echo "构建上下文: ${BUILD_CONTEXT}"
# 检查 Docker 是否安装
# 检查 Docker
if ! command -v docker &> /dev/null; then
echo "错误: 未找到 Docker请先安装 Docker"
echo "错误: 未找到 Docker"
exit 1
fi
# 构建镜像
echo "开始构建镜像..."
docker build -t ${IMAGE_NAME}:${TAG} -f ${DOCKERFILE} ${BUILD_CONTEXT}
echo "开始构建 amd64 镜像..."
docker build --platform linux/amd64 -t ${IMAGE_NAME}:${TAG} -f ${DOCKERFILE} ${BUILD_CONTEXT}
# 标记镜像
echo "标记镜像..."
docker tag ${IMAGE_NAME}:${TAG} ${FULL_IMAGE_NAME}
# 如果需要推送
if [ "$PUSH" = "true" ]; then
# 推送逻辑
if [ "$PUSH" = "push" ]; then
echo "登录到镜像仓库..."
# 检查是否已经登录到目标仓库
if ! docker info 2>/dev/null | grep -q "${REGISTRY}"; then
echo "需要登录到镜像仓库: ${REGISTRY}"
# 从环境变量获取凭据,如果存在的话
if [ -n "$DOCKER_REGISTRY_USER" ] && [ -n "$DOCKER_REGISTRY_PASSWORD" ]; then
echo "使用环境变量中的凭据进行登录..."
echo "$DOCKER_REGISTRY_PASSWORD" | docker login ${REGISTRY} --username "$DOCKER_REGISTRY_USER" --password-stdin
else
# 交互式登录
echo "请输入镜像仓库凭据:"
docker login ${REGISTRY}
fi
# 检查登录是否成功
if [ $? -ne 0 ]; then
echo "错误: 镜像仓库登录失败"
exit 1
fi
if [ -n "$DOCKER_REGISTRY_USER" ] && [ -n "$DOCKER_REGISTRY_PASSWORD" ]; then
echo "$DOCKER_REGISTRY_PASSWORD" | docker login ${REGISTRY} --username "$DOCKER_REGISTRY_USER" --password-stdin
else
echo "已登录到镜像仓库 ${REGISTRY}"
docker login ${REGISTRY}
fi
echo "推送镜像到仓库..."
echo "推送镜像..."
docker push ${FULL_IMAGE_NAME}
echo "✅ 镜像推送完成: ${FULL_IMAGE_NAME}"
echo "✅ amd64 镜像推送完成: ${FULL_IMAGE_NAME}"
else
echo " 镜像构建完成,未推送 (使用 'true' 作为第1个参数来推送)"
echo "✅ amd64 镜像构建完成"
echo " 使用 '$0 push' 来推送镜像"
fi
echo "=== 完成 ==="