diff --git a/Dockerfile b/Dockerfile index 37e404a..f19adc6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ RUN apk update && apk add --no-cache pnpm COPY ui ./ui -RUN cd /app/ui && pnpm install && pnpm /app/ui run build +RUN cd /app/ui && pnpm install --force && pnpm run build FROM ccr.ccs.tencentyun.com/miaogai/golang:alpine AS gobuilder diff --git a/build_and_push.sh b/build_and_push.sh index b9d1cca..02280fd 100755 --- a/build_and_push.sh +++ b/build_and_push.sh @@ -1,7 +1,7 @@ #!/bin/bash # Docker 镜像构建和推送脚本 -# 使用方法: ./build_and_push.sh [镜像标签] [推送标志] +# 使用方法: ./build_and_push.sh [推送标志] [镜像标签] set -e # 遇到错误立即退出 @@ -13,8 +13,8 @@ DOCKERFILE="Dockerfile" BUILD_CONTEXT="." # 参数处理 -TAG=${1:-"latest"} -PUSH=${2:-"false"} +PUSH=${1:-"false"} +TAG=${2:-"latest"} # 完整的镜像地址 FULL_IMAGE_NAME="${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${TAG}" @@ -41,18 +41,36 @@ docker tag ${IMAGE_NAME}:${TAG} ${FULL_IMAGE_NAME} # 如果需要推送 if [ "$PUSH" = "true" ]; then echo "登录到镜像仓库..." - # 如果使用 Docker Hub - # docker login - # 如果使用私有仓库 - # docker login ${REGISTRY} + # 检查是否已经登录到目标仓库 + 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 + else + echo "已登录到镜像仓库 ${REGISTRY}" + fi echo "推送镜像到仓库..." docker push ${FULL_IMAGE_NAME} echo "✅ 镜像推送完成: ${FULL_IMAGE_NAME}" else - echo "ℹ️ 镜像构建完成,未推送 (使用 'true' 作为第二个参数来推送)" + echo "ℹ️ 镜像构建完成,未推送 (使用 'true' 作为第1个参数来推送)" fi echo "=== 完成 ===" \ No newline at end of file diff --git a/ui/pnpm-workspace.yaml b/ui/pnpm-workspace.yaml new file mode 100644 index 0000000..35fa89c --- /dev/null +++ b/ui/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +ignoredBuiltDependencies: + - '@tailwindcss/oxide' + - esbuild