| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/bin/bash
- # License Admin Docker 构建脚本
- # 用于构建 Linux x86_64 Docker 镜像
- # 注意:需要先编译好二进制文件
- set -e
- # 颜色输出
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- NC='\033[0m' # No Color
- # 配置
- IMAGE_NAME="license-admin"
- VERSION="${1:-latest}"
- REGISTRY="${2:-}"
- echo -e "${GREEN}========================================${NC}"
- echo -e "${GREEN}License Admin Docker 构建脚本${NC}"
- echo -e "${GREEN}========================================${NC}"
- echo ""
- # 检查 Docker 是否安装
- if ! command -v docker &> /dev/null; then
- echo -e "${RED}错误: Docker 未安装,请先安装 Docker${NC}"
- exit 1
- fi
- # 检查二进制文件是否存在
- if [ ! -f "./license-admin" ]; then
- echo -e "${YELLOW}警告: 未找到二进制文件 license-admin${NC}"
- echo -e "${YELLOW}正在编译二进制文件...${NC}"
-
- # 编译 Linux x86_64 二进制文件
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o license-admin .
-
- if [ $? -ne 0 ]; then
- echo -e "${RED}错误: 编译失败${NC}"
- exit 1
- fi
-
- echo -e "${GREEN}✓ 编译成功${NC}"
- echo ""
- fi
- # 显示构建信息
- echo -e "${YELLOW}构建信息:${NC}"
- echo " 镜像名称: ${IMAGE_NAME}"
- echo " 版本标签: ${VERSION}"
- if [ -n "$REGISTRY" ]; then
- echo " 注册表: ${REGISTRY}"
- FULL_IMAGE_NAME="${REGISTRY}/${IMAGE_NAME}:${VERSION}"
- else
- FULL_IMAGE_NAME="${IMAGE_NAME}:${VERSION}"
- fi
- echo " 完整镜像名: ${FULL_IMAGE_NAME}"
- echo ""
- # 构建 Docker 镜像
- echo -e "${YELLOW}开始构建 Docker 镜像...${NC}"
- docker build \
- --platform linux/amd64 \
- -t "${FULL_IMAGE_NAME}" \
- -t "${IMAGE_NAME}:latest" \
- .
- if [ $? -eq 0 ]; then
- echo ""
- echo -e "${GREEN}✓ 构建成功!${NC}"
- echo ""
- echo -e "${YELLOW}镜像信息:${NC}"
- docker images "${IMAGE_NAME}" --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.CreatedAt}}"
- echo ""
- echo -e "${YELLOW}使用方法:${NC}"
- echo " 运行容器(需要先启动 MySQL):"
- echo " docker run -d -p 8080:8080 \\"
- echo " -e DB_HOST=mysql \\"
- echo " -e DB_PORT=3306 \\"
- echo " -e DB_USER=root \\"
- echo " -e DB_PASSWORD=your-password \\"
- echo " -e DB_NAME=license_admin \\"
- echo " --name license-admin ${FULL_IMAGE_NAME}"
- echo ""
- echo " 运行容器(连接外部 MySQL):"
- echo " docker run -d -p 8080:8080 \\"
- echo " -e DB_HOST=host.docker.internal \\"
- echo " -e DB_PORT=3306 \\"
- echo " -e DB_USER=root \\"
- echo " -e DB_PASSWORD=your-password \\"
- echo " -e DB_NAME=license_admin \\"
- echo " -e AUTH_TOKEN=your-token \\"
- echo " --name license-admin ${FULL_IMAGE_NAME}"
- echo ""
- echo " 使用 Docker Compose(推荐,自动启动 MySQL):"
- echo " docker-compose up -d"
- echo ""
- if [ -n "$REGISTRY" ]; then
- echo -e "${YELLOW}推送到注册表:${NC}"
- echo " docker push ${FULL_IMAGE_NAME}"
- echo ""
- fi
- else
- echo ""
- echo -e "${RED}✗ 构建失败!${NC}"
- exit 1
- fi
|