Ultima attività 1776996537

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

Revisione d299c9524c281c52d4504f62aab9af638784992a

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