Última actividad 1776996537

支持配置用户名|镜像名|版本号|仓库地址等等,放在需要构建的项目路径下即可

doracoin's Avatar doracoin revisó este gist 1776996537. Ir a la revisión

1 file changed, 106 insertions

dockerbuild.sh(archivo creado)

@@ -0,0 +1,106 @@
1 + #!/bin/bash
2 +
3 + # Docker 一键打包推送脚本
4 + # 用法: ./docker-build-push.sh [版本号]
5 +
6 + # 配置项(请修改为你的信息)
7 + DOCKER_USERNAME="doracoin" # Docker Hub 用户名
8 + REGISTRY="" # 私有仓库地址,如:registry.cn-hangzhou.aliyuncs.com
9 + IMAGE_NAME="YOUR_IMAGE_NAME"
10 + VERSION=${1:-"v1.0.0"} # 默认版本 v1.0.0,可通过参数指定
11 +
12 + # 颜色输出
13 + RED='\033[0;31m'
14 + GREEN='\033[0;32m'
15 + YELLOW='\033[1;33m'
16 + BLUE='\033[0;34m'
17 + NC='\033[0m' # No Color
18 +
19 + # 构建完整镜像名
20 + if [ -z "$REGISTRY" ]; then
21 + FULL_IMAGE="${DOCKER_USERNAME}/${IMAGE_NAME}"
22 + else
23 + FULL_IMAGE="${REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}"
24 + fi
25 +
26 + echo -e "${BLUE}========================================${NC}"
27 + echo -e "${BLUE} ${IMAGE_NAME} Docker 打包推送${NC}"
28 + echo -e "${BLUE}========================================${NC}"
29 + echo ""
30 + echo -e "镜像名称: ${YELLOW}${IMAGE_NAME}${NC}"
31 + echo -e "版本标签: ${YELLOW}${VERSION}${NC}"
32 + echo -e "推送地址: ${YELLOW}${FULL_IMAGE}${NC}"
33 + echo ""
34 +
35 + # 检查 Docker 是否安装
36 + if ! command -v docker &> /dev/null; then
37 + echo -e "${RED}错误: Docker 未安装${NC}"
38 + exit 1
39 + fi
40 +
41 + # 检查是否已登录
42 + echo -e "${BLUE}>>> 检查 Docker 登录状态...${NC}"
43 + if ! docker info &> /dev/null; then
44 + echo -e "${YELLOW}请先登录 Docker:${NC}"
45 + if [ -z "$REGISTRY" ]; then
46 + docker login
47 + else
48 + docker login ${REGISTRY}
49 + fi
50 + fi
51 +
52 + # 构建镜像
53 + echo ""
54 + echo -e "${BLUE}>>> 开始构建镜像...${NC}"
55 + docker build -t ${IMAGE_NAME}:latest .
56 +
57 + if [ $? -ne 0 ]; then
58 + echo -e "${RED}构建失败!${NC}"
59 + exit 1
60 + fi
61 +
62 + # 查看镜像大小
63 + echo ""
64 + echo -e "${BLUE}>>> 镜像信息:${NC}"
65 + docker images ${IMAGE_NAME}:latest --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
66 +
67 + # 标记镜像
68 + echo ""
69 + echo -e "${BLUE}>>> 标记镜像版本...${NC}"
70 + docker tag ${IMAGE_NAME}:latest ${FULL_IMAGE}:latest
71 + docker tag ${IMAGE_NAME}:latest ${FULL_IMAGE}:${VERSION}
72 + echo -e "${GREEN}✓ 已标记: ${FULL_IMAGE}:latest${NC}"
73 + echo -e "${GREEN}✓ 已标记: ${FULL_IMAGE}:${VERSION}${NC}"
74 +
75 + # 推送镜像
76 + echo ""
77 + echo -e "${BLUE}>>> 推送镜像到仓库...${NC}"
78 + echo -e "${YELLOW}正在推送 latest...${NC}"
79 + docker push ${FULL_IMAGE}:latest
80 +
81 + if [ $? -ne 0 ]; then
82 + echo -e "${RED}推送 latest 失败!${NC}"
83 + exit 1
84 + fi
85 +
86 + echo -e "${YELLOW}正在推送 ${VERSION}...${NC}"
87 + docker push ${FULL_IMAGE}:${VERSION}
88 +
89 + if [ $? -ne 0 ]; then
90 + echo -e "${RED}推送 ${VERSION} 失败!${NC}"
91 + exit 1
92 + fi
93 +
94 + # 完成
95 + echo ""
96 + echo -e "${GREEN}========================================${NC}"
97 + echo -e "${GREEN} 推送成功!${NC}"
98 + echo -e "${GREEN}========================================${NC}"
99 + echo ""
100 + echo -e "拉取命令:"
101 + echo -e " ${YELLOW}docker pull ${FULL_IMAGE}:latest${NC}"
102 + echo -e " ${YELLOW}docker pull ${FULL_IMAGE}:${VERSION}${NC}"
103 + echo ""
104 + echo -e "运行命令:"
105 + echo -e " ${YELLOW}docker run -d -p HOST_PORT:CONTAINER_PORT ${FULL_IMAGE}:latest${NC}"
106 + echo ""
Siguiente Anterior