QAUP_Management/deploy/docker/check-image-versions.sh

126 lines
3.6 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# QAUP Docker 镜像版本检查脚本
# 检查各个镜像的最新稳定版本
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
print_message() {
local color=$1
local message=$2
echo -e "${color}${message}${NC}"
}
# 检查 Docker Hub API 获取最新版本
check_dockerhub_tags() {
local repo=$1
local filter=${2:-""}
print_message $BLUE "检查 $repo 的版本..."
# 使用 Docker Hub API 获取标签
local api_url="https://registry.hub.docker.com/v2/repositories/$repo/tags?page_size=100"
if command -v curl &> /dev/null; then
local tags=$(curl -s "$api_url" | grep -o '"name":"[^"]*"' | cut -d'"' -f4 | head -20)
echo "最新的一些版本标签:"
echo "$tags" | head -10
else
print_message $YELLOW "curl 不可用,无法检查版本"
fi
echo ""
}
# 检查当前使用的版本
check_current_versions() {
print_message $BLUE "当前 docker-compose.yml 中使用的版本:"
echo ""
if [ -f "../docker-compose.yml" ]; then
echo "PostgreSQL/PostGIS:"
grep -A 1 "qaup-postgres:" ../docker-compose.yml | grep "image:" | awk '{print " " $2}'
echo "Redis:"
grep -A 1 "qaup-redis:" ../docker-compose.yml | grep "image:" | awk '{print " " $2}'
echo ""
fi
if [ -f "../Dockerfile" ]; then
echo "Dockerfile 中的镜像:"
grep "^FROM" ../Dockerfile | awk '{print " " $2}'
echo ""
fi
}
print_message $GREEN "========================================="
print_message $GREEN "QAUP Docker 镜像版本检查"
print_message $GREEN "========================================="
echo ""
# 检查当前版本
check_current_versions
# 检查各个镜像的最新版本
print_message $BLUE "检查 Docker Hub 上的最新版本..."
echo ""
# PostgreSQL/PostGIS
check_dockerhub_tags "postgis/postgis"
# Redis
check_dockerhub_tags "library/redis"
# OpenJDK
check_dockerhub_tags "library/openjdk"
# Maven
check_dockerhub_tags "library/maven"
# Nginx
check_dockerhub_tags "library/nginx"
# Node.js
check_dockerhub_tags "library/node"
print_message $YELLOW "注意事项:"
echo "1. 选择版本时应优先考虑稳定性而非最新性"
echo "2. LTS (Long Term Support) 版本通常是生产环境的最佳选择"
echo "3. 对于 PostGIS需要确保 PostgreSQL 版本兼容性"
echo "4. 建议在测试环境验证新版本后再用于生产"
echo ""
# 检查当前配置文件中的版本
if [ -f "image-versions.env" ]; then
print_message $BLUE "当前配置文件中的版本:"
source image-versions.env
echo "PostgreSQL/PostGIS: $POSTGRES_IMAGE"
echo "Redis: $REDIS_IMAGE"
echo "OpenJDK: $OPENJDK_IMAGE"
echo "Maven: $MAVEN_IMAGE"
echo "Nginx: $NGINX_IMAGE"
echo "Node.js: $NODE_IMAGE"
echo ""
fi
print_message $GREEN "基于实际检查的推荐版本组合:"
echo "PostgreSQL/PostGIS: postgis/postgis:15-3.5-alpine (稳定) 或 postgis/postgis:16-3.5-alpine (更新)"
echo "Redis: redis:7.4.5-alpine (7.x系列最新稳定版) 或 redis:8.0.3-alpine (最新版本)"
echo "OpenJDK: openjdk:17-jre-slim (LTS推荐)"
echo "Maven: maven:3.9.11-openjdk-17-slim (最新稳定版)"
echo "Nginx: nginx:stable-alpine (稳定版本)"
echo "Node.js: node:lts-alpine (当前LTS版本)"
echo ""
print_message $YELLOW "更新建议:"
echo "1. 运行 './update-image-versions.sh --dry-run' 预览更改"
echo "2. 运行 './update-image-versions.sh --backup' 执行更新"
echo "3. 在测试环境验证新版本兼容性"
echo "4. 更新离线部署包"