#!/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