From e8a543e1d16a23788ee90b4316264e6c0e559cf4 Mon Sep 17 00:00:00 2001 From: "sundapeng.sdp" Date: Thu, 16 Oct 2025 11:45:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Dockerfile=20?= =?UTF-8?q?=E4=B8=AD=20chown=20=E7=9B=AE=E5=BD=95=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=94=A8=E6=88=B7=E6=9D=83=E9=99=90=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs #20 --- src/metric/ftp/build/Dockerfile | 19 ++--- src/metric/ftp/build/start-ftp-supervised.sh | 3 + src/metric/grafana/build/Dockerfile | 31 +++---- .../grafana/build/start-grafana-supervised.sh | 10 +-- src/metric/prometheus/build/Dockerfile | 16 ++-- src/metric/prometheus/build/prometheus.yml | 2 +- .../build/start-prometheus-supervised.sh | 1 + src/metric/tests/docker-compose.yml | 27 ++++--- src/metric/tests/env.example | 18 ++--- .../tests/scripts/03_test_node_install.sh | 4 +- .../tests/scripts/common/init-directories.sh | 51 +++++------- src/metric/tests/scripts/common/start-all.sh | 2 +- src/metric/tests/scripts/load-images.sh | 80 +++++++------------ 13 files changed, 109 insertions(+), 155 deletions(-) diff --git a/src/metric/ftp/build/Dockerfile b/src/metric/ftp/build/Dockerfile index b691843..5d11e10 100644 --- a/src/metric/ftp/build/Dockerfile +++ b/src/metric/ftp/build/Dockerfile @@ -31,25 +31,26 @@ RUN mkdir -p /var/log/supervisor ENV FTP_BASE_PATH=/private/argus/ftp # 设置域名环境变量 -ENV DOMAIN=prom.ftp.argus.com +ENV DOMAIN=ftp.metric.argus.com # 设置FTP用户密码环境变量 ENV FTP_PASSWORD=ZGClab1234! # 设置用户和组ID环境变量 -ARG FTP_UID=2133 -ARG FTP_GID=2015 -ENV FTP_UID=${FTP_UID} -ENV FTP_GID=${FTP_GID} +ARG ARGUS_BUILD_UID=2133 +ARG ARGUS_BUILD_GID=2015 + +ENV ARGUS_BUILD_UID=${ARGUS_BUILD_UID} \ + ARGUS_BUILD_GID=${ARGUS_BUILD_GID} # 创建FTP用户和目录结构 -RUN groupadd -g ${FTP_GID} ftpuser && \ - useradd -u ${FTP_UID} -g ${FTP_GID} -d ${FTP_BASE_PATH}/share -s /bin/bash ftpuser && \ +RUN groupadd -g ${ARGUS_BUILD_GID} ftpuser && \ + useradd -u ${ARGUS_BUILD_UID} -g ${ARGUS_BUILD_GID} -d ${FTP_BASE_PATH}/share -s /bin/bash ftpuser && \ mkdir -p ${FTP_BASE_PATH}/share \ && mkdir -p /private/argus/etc \ && mkdir -p /var/log/vsftpd \ - && mkdir -p /var/run/vsftpd/empty \ - && chown -R ftpuser:ftpuser ${FTP_BASE_PATH} + && chown -R ftpuser:ftpuser ${FTP_BASE_PATH} \ + && mkdir -p /var/run/vsftpd/empty # 创建vsftpd配置目录和用户列表文件 RUN mkdir -p /etc/vsftpd && \ diff --git a/src/metric/ftp/build/start-ftp-supervised.sh b/src/metric/ftp/build/start-ftp-supervised.sh index fb0a213..57d0e6d 100644 --- a/src/metric/ftp/build/start-ftp-supervised.sh +++ b/src/metric/ftp/build/start-ftp-supervised.sh @@ -32,6 +32,9 @@ IP=$(ifconfig eth0 | awk '/inet /{print $2}' || hostname -i) echo "current IP: ${IP}" echo "${IP}" > /private/argus/etc/${DOMAIN} +chown ${ARGUS_BUILD_UID}:${ARGUS_BUILD_GID} /private/argus/etc/${DOMAIN} +chmod +x /private/argus/etc/${DOMAIN} + # 启动vsftpd echo "[INFO] Starting vsftpd..." exec /usr/sbin/vsftpd /tmp/vsftpd.conf diff --git a/src/metric/grafana/build/Dockerfile b/src/metric/grafana/build/Dockerfile index 82ba4fa..c9212dc 100644 --- a/src/metric/grafana/build/Dockerfile +++ b/src/metric/grafana/build/Dockerfile @@ -17,30 +17,31 @@ RUN mkdir -p /var/log/supervisor ENV GRAFANA_BASE_PATH=/private/argus/metric/grafana # 设置用户和组ID环境变量 -ARG GRAFANA_UID=2133 -ARG GRAFANA_GID=2015 -ENV GRAFANA_UID=${GRAFANA_UID} -ENV GRAFANA_GID=${GRAFANA_GID} +ARG ARGUS_BUILD_UID=2133 +ARG ARGUS_BUILD_GID=2015 + +ENV ARGUS_BUILD_UID=${ARGUS_BUILD_UID} \ + ARGUS_BUILD_GID=${ARGUS_BUILD_GID} # 创建基本目录结构 RUN mkdir -p /private/argus/etc \ - && mkdir -p /private/argus/metric/grafana/data \ - && mkdir -p /private/argus/metric/grafana/logs \ - && mkdir -p /private/argus/metric/grafana/plugins \ - && mkdir -p /private/argus/metric/grafana/provisioning/datasources \ - && mkdir -p /private/argus/metric/grafana/provisioning/dashboards \ - && mkdir -p /private/argus/metric/grafana/data/sessions \ - && mkdir -p /private/argus/metric/grafana/data/dashboards \ - && mkdir -p /private/argus/metric/grafana/config \ + && mkdir -p ${GRAFANA_BASE_PATH}/data \ + && mkdir -p ${GRAFANA_BASE_PATH}/logs \ + && mkdir -p ${GRAFANA_BASE_PATH}/plugins \ + && mkdir -p ${GRAFANA_BASE_PATH}/provisioning/datasources \ + && mkdir -p ${GRAFANA_BASE_PATH}/provisioning/dashboards \ + && mkdir -p ${GRAFANA_BASE_PATH}/data/sessions \ + && mkdir -p ${GRAFANA_BASE_PATH}/data/dashboards \ + && mkdir -p ${GRAFANA_BASE_PATH}/config \ && mkdir -p /etc/grafana \ && mkdir -p /var/lib/grafana \ && mkdir -p /var/log/grafana # 修改 Grafana 用户 UID/GID 并授权 RUN deluser grafana && \ - addgroup -g ${GRAFANA_GID} grafana && \ - adduser -u ${GRAFANA_UID} -G grafana -s /bin/sh -D grafana && \ - chown -R grafana:grafana /var/lib/grafana /etc/grafana /var/log/grafana /private/argus + addgroup -g ${ARGUS_BUILD_GID} grafana && \ + adduser -u ${ARGUS_BUILD_UID} -G grafana -s /bin/sh -D grafana && \ + chown -R grafana:grafana /var/lib/grafana /etc/grafana /var/log/grafana ${GRAFANA_BASE_PATH} # 复制配置文件到容器内临时位置 COPY grafana.ini /tmp/grafana.ini diff --git a/src/metric/grafana/build/start-grafana-supervised.sh b/src/metric/grafana/build/start-grafana-supervised.sh index 5d4b8a1..95bb267 100644 --- a/src/metric/grafana/build/start-grafana-supervised.sh +++ b/src/metric/grafana/build/start-grafana-supervised.sh @@ -9,6 +9,7 @@ DOMAIN=grafana.metric.argus.com IP=$(ifconfig | awk '/inet / && $2 != "127.0.0.1" {print $2; exit}') echo "current IP: ${IP}" echo "${IP}" > /private/argus/etc/${DOMAIN} +chmod +x /private/argus/etc/${DOMAIN} # 确保必要目录存在(权限已在 Dockerfile 中设置) mkdir -p /private/argus/metric/grafana/data @@ -27,7 +28,6 @@ mkdir -p /var/lib/grafana if [ -f "/tmp/grafana.ini" ]; then echo "[INFO] Copying grafana.ini to /private/argus/metric/grafana/config/" cp /tmp/grafana.ini /private/argus/metric/grafana/config/grafana.ini - chown grafana:grafana /private/argus/metric/grafana/config/grafana.ini echo "[INFO] Grafana configuration copied successfully" fi @@ -47,12 +47,9 @@ fi if [ -f "/tmp/datasources.yml" ]; then echo "[INFO] Copying datasource configuration to /private/argus/metric/grafana/provisioning/datasources/" cp /tmp/datasources.yml /private/argus/metric/grafana/provisioning/datasources/datasources.yml - chown grafana:grafana /private/argus/metric/grafana/provisioning/datasources/datasources.yml echo "[INFO] Datasource configuration copied successfully" elif [ -d "/private/argus/metric/grafana/provisioning/datasources" ] && [ "$(ls -A /private/argus/metric/grafana/provisioning/datasources)" ]; then echo "[INFO] Found existing datasource provisioning files in /private/argus/metric/grafana/provisioning/datasources" - # 确保数据源配置目录权限正确 - chown -R grafana:grafana /private/argus/metric/grafana/provisioning/datasources elif [ -d "/etc/grafana/provisioning/datasources" ] && [ "$(ls -A /etc/grafana/provisioning/datasources)" ]; then echo "[INFO] Found datasource provisioning files in /etc/grafana/provisioning/datasources" # 确保数据源配置目录权限正确 @@ -65,7 +62,6 @@ fi if [ -f "/tmp/dashboards.yml" ]; then echo "[INFO] Copying dashboard configuration to /private/argus/metric/grafana/provisioning/dashboards/" cp /tmp/dashboards.yml /private/argus/metric/grafana/provisioning/dashboards/dashboards.yml - chown grafana:grafana /private/argus/metric/grafana/provisioning/dashboards/dashboards.yml echo "[INFO] Dashboard configuration copied successfully" fi @@ -73,13 +69,9 @@ fi if [ -f "/tmp/default_dashboard.json" ]; then echo "[INFO] Copying default dashboard to /private/argus/metric/grafana/provisioning/dashboards/" cp /tmp/default_dashboard.json /private/argus/metric/grafana/provisioning/dashboards/default_dashboard.json - chown grafana:grafana /private/argus/metric/grafana/provisioning/dashboards/default_dashboard.json echo "[INFO] Default dashboard copied successfully" fi -# 确保所有配置目录权限正确 -chown -R grafana:grafana /private/argus/metric/grafana/provisioning/ - # 启动 Grafana if [ -n "$CONFIG_FILE" ]; then echo "[INFO] Starting Grafana with custom configuration..." diff --git a/src/metric/prometheus/build/Dockerfile b/src/metric/prometheus/build/Dockerfile index e2195a8..9e609f3 100755 --- a/src/metric/prometheus/build/Dockerfile +++ b/src/metric/prometheus/build/Dockerfile @@ -48,11 +48,11 @@ RUN mkdir -p /var/log/supervisor ENV PROMETHEUS_BASE_PATH=/private/argus/metric/prometheus # 设置用户和组ID环境变量 -ARG PROMETHEUS_UID=2133 -ARG PROMETHEUS_GID=2015 -ENV PROMETHEUS_UID=${PROMETHEUS_UID} -ENV PROMETHEUS_GID=${PROMETHEUS_GID} +ARG ARGUS_BUILD_UID=2133 +ARG ARGUS_BUILD_GID=2015 +ENV ARGUS_BUILD_UID=${ARGUS_BUILD_UID} \ + ARGUS_BUILD_GID=${ARGUS_BUILD_GID} # 创建目录结构 RUN mkdir -p ${PROMETHEUS_BASE_PATH}/rules \ && mkdir -p ${PROMETHEUS_BASE_PATH}/targets \ @@ -61,11 +61,11 @@ RUN mkdir -p ${PROMETHEUS_BASE_PATH}/rules \ && ln -s ${PROMETHEUS_BASE_PATH} /prometheus # 修改 Prometheus 用户 UID/GID 并授权 -RUN usermod -u ${PROMETHEUS_UID} nobody && \ - groupmod -g ${PROMETHEUS_GID} nogroup && \ +RUN usermod -u ${ARGUS_BUILD_UID} nobody && \ + groupmod -g ${ARGUS_BUILD_GID} nogroup && \ chown -h nobody:nogroup /prometheus && \ - chown -R nobody:nogroup /private/argus/metric /etc/prometheus && \ - chown -R nobody:nogroup ${PROMETHEUS_BASE_PATH} + chown -R nobody:nogroup ${PROMETHEUS_BASE_PATH} && \ + chown -R nobody:nogroup /etc/prometheus # supervisor 配置 COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf diff --git a/src/metric/prometheus/build/prometheus.yml b/src/metric/prometheus/build/prometheus.yml index e3e4403..f813127 100755 --- a/src/metric/prometheus/build/prometheus.yml +++ b/src/metric/prometheus/build/prometheus.yml @@ -7,7 +7,7 @@ global: alerting: alertmanagers: - static_configs: - - targets: [] + - targets: ["alertmanager.alert.argus.com:9093"] # 规则目录 rule_files: diff --git a/src/metric/prometheus/build/start-prometheus-supervised.sh b/src/metric/prometheus/build/start-prometheus-supervised.sh index 75d9a39..2233a9a 100755 --- a/src/metric/prometheus/build/start-prometheus-supervised.sh +++ b/src/metric/prometheus/build/start-prometheus-supervised.sh @@ -17,6 +17,7 @@ sed "s|\${PROMETHEUS_BASE_PATH}|${PROMETHEUS_BASE_PATH}|g" \ IP=$(ifconfig eth0 | awk '/inet /{print $2}') echo "current IP: ${IP}" echo "${IP}" > /private/argus/etc/${DOMAIN} +chmod +x /private/argus/etc/${DOMAIN} exec /bin/prometheus \ --config.file=${PROMETHEUS_BASE_PATH}/prometheus.yml \ diff --git a/src/metric/tests/docker-compose.yml b/src/metric/tests/docker-compose.yml index 8c9b724..0a88552 100644 --- a/src/metric/tests/docker-compose.yml +++ b/src/metric/tests/docker-compose.yml @@ -9,8 +9,9 @@ services: context: ../ftp/build dockerfile: Dockerfile args: - FTP_UID: ${FTP_UID:-2133} - FTP_GID: ${FTP_GID:-2015} + ARGUS_BUILD_UID: ${ARGUS_BUILD_UID:-2133} + ARGUS_BUILD_GID: ${ARGUS_BUILD_GID:-2015} + USE_INTRANET: ${USE_INTRANET:-false} image: argus-metric-ftp:latest container_name: argus-ftp restart: unless-stopped @@ -18,9 +19,9 @@ services: - TZ=Asia/Shanghai - FTP_BASE_PATH=/private/argus/ftp - FTP_PASSWORD=${FTP_PASSWORD:-ZGClab1234!} - - DOMAIN=${FTP_DOMAIN:-prom.ftp.argus.com} - - FTP_UID=${FTP_UID:-2133} - - FTP_GID=${FTP_GID:-2015} + - DOMAIN=${FTP_DOMAIN:-ftp.metric.argus.com} + - ARGUS_BUILD_UID=${ARGUS_BUILD_UID:-2133} + - ARGUS_BUILD_GID=${ARGUS_BUILD_GID:-2015} ports: - "${FTP_PORT:-21}:21" - "${FTP_DATA_PORT:-20}:20" @@ -44,8 +45,8 @@ services: context: ../prometheus/build dockerfile: Dockerfile args: - PROMETHEUS_UID: ${PROMETHEUS_UID:-2133} - PROMETHEUS_GID: ${PROMETHEUS_GID:-2015} + ARGUS_BUILD_UID: ${ARGUS_BUILD_UID:-2133} + ARGUS_BUILD_GID: ${ARGUS_BUILD_GID:-2015} USE_INTRANET: ${USE_INTRANET:-false} image: argus-metric-prometheus:latest container_name: argus-prometheus @@ -53,8 +54,8 @@ services: environment: - TZ=Asia/Shanghai - PROMETHEUS_BASE_PATH=/private/argus/metric/prometheus - - PROMETHEUS_UID=${PROMETHEUS_UID:-2133} - - PROMETHEUS_GID=${PROMETHEUS_GID:-2015} + - ARGUS_BUILD_UID=${ARGUS_BUILD_UID:-2133} + - ARGUS_BUILD_GID=${ARGUS_BUILD_GID:-2015} ports: - "${PROMETHEUS_PORT:-9090}:9090" volumes: @@ -76,16 +77,16 @@ services: context: ../grafana/build dockerfile: Dockerfile args: - GRAFANA_UID: ${GRAFANA_UID:-2133} - GRAFANA_GID: ${GRAFANA_GID:-2015} + ARGUS_BUILD_UID: ${ARGUS_BUILD_UID:-2133} + ARGUS_BUILD_GID: ${ARGUS_BUILD_GID:-2015} image: argus-metric-grafana:latest container_name: argus-grafana restart: unless-stopped environment: - TZ=Asia/Shanghai - GRAFANA_BASE_PATH=/private/argus/metric/grafana - - GRAFANA_UID=${GRAFANA_UID:-2133} - - GRAFANA_GID=${GRAFANA_GID:-2015} + - ARGUS_BUILD_UID=${ARGUS_BUILD_UID:-2133} + - ARGUS_BUILD_GID=${ARGUS_BUILD_GID:-2015} - GF_SERVER_HTTP_PORT=3000 - GF_LOG_LEVEL=warn - GF_LOG_MODE=console diff --git a/src/metric/tests/env.example b/src/metric/tests/env.example index 9d72de2..afd491b 100644 --- a/src/metric/tests/env.example +++ b/src/metric/tests/env.example @@ -1,19 +1,15 @@ -# 用户和组配置 -FTP_UID=2133 -FTP_GID=2015 -PROMETHEUS_UID=2133 -PROMETHEUS_GID=2015 -GRAFANA_UID=2133 -GRAFANA_GID=2015 +# 统一用户和组配置 +ARGUS_BUILD_UID=1048 +ARGUS_BUILD_GID=1048 # 数据根目录 -DATA_ROOT=/private/argus +DATA_ROOT=/private # FTP 配置 -FTP_PORT=2122 -FTP_DATA_PORT=2022 +FTP_PORT=21 +FTP_DATA_PORT=20 FTP_PASSWORD=ZGClab1234! -FTP_DOMAIN=prom.ftp.argus.com +FTP_DOMAIN=ftp.metric.argus.com # Prometheus 配置 PROMETHEUS_PORT=9090 diff --git a/src/metric/tests/scripts/03_test_node_install.sh b/src/metric/tests/scripts/03_test_node_install.sh index b0402f2..af8200f 100755 --- a/src/metric/tests/scripts/03_test_node_install.sh +++ b/src/metric/tests/scripts/03_test_node_install.sh @@ -1,14 +1,12 @@ #!/bin/bash set -e -FTP_DOMAIN="${FTP_DOMAIN:-ftp.metric.argus.com}" FTP_SERVER="${FTP_SERVER:-172.30.0.40}" FTP_USER="${FTP_USER:-ftpuser}" FTP_PASSWORD="${FTP_PASSWORD:-ZGClab1234!}" FTP_PORT="${FTP_PORT:-21}" -# 优先使用域名,如果域名不可用则使用 IP -FTP_HOST="${FTP_DOMAIN:-$FTP_SERVER}" +FTP_HOST="${FTP_SERVER}" echo "[03] 进入测试节点执行安装..." echo "[03] 使用 FTP 地址: ${FTP_HOST}:${FTP_PORT}" diff --git a/src/metric/tests/scripts/common/init-directories.sh b/src/metric/tests/scripts/common/init-directories.sh index 084c52a..a8bab51 100755 --- a/src/metric/tests/scripts/common/init-directories.sh +++ b/src/metric/tests/scripts/common/init-directories.sh @@ -1,7 +1,6 @@ #!/bin/bash # 初始化目录脚本 -# 用于创建所有必要的数据目录并设置正确的权限 set -e @@ -16,61 +15,47 @@ if [ -f .env ]; then fi # 默认配置 -FTP_UID=${FTP_UID:-2133} -FTP_GID=${FTP_GID:-2015} -PROMETHEUS_UID=${PROMETHEUS_UID:-2133} -PROMETHEUS_GID=${PROMETHEUS_GID:-2015} -GRAFANA_UID=${GRAFANA_UID:-2133} -GRAFANA_GID=${GRAFANA_GID:-2015} +ARGUS_BUILD_UID=${ARGUS_BUILD_UID:-2133} +ARGUS_BUILD_GID=${ARGUS_BUILD_GID:-2015} DATA_ROOT=${DATA_ROOT:-/private} echo "开始初始化目录结构..." echo "数据根目录: ${DATA_ROOT}" -echo "" +echo "统一 UID: ${ARGUS_BUILD_UID}" +echo "统一 GID: ${ARGUS_BUILD_GID}" + +# 创建基础目录结构 +echo "创建基础目录结构..." +sudo mkdir -p ${DATA_ROOT}/argus/metric +sudo mkdir -p ${DATA_ROOT}/argus/etc +sudo mkdir -p ${DATA_ROOT}/argus/agent # 创建 FTP 目录 echo "创建 FTP 目录..." sudo mkdir -p ${DATA_ROOT}/argus/metric/ftp/share -sudo chown -R ${FTP_UID}:${FTP_GID} ${DATA_ROOT}/argus/metric/ftp -sudo chmod -R 755 ${DATA_ROOT}/argus/metric/ftp # 创建 Prometheus 目录 echo "创建 Prometheus 目录..." sudo mkdir -p ${DATA_ROOT}/argus/metric/prometheus/{data,rules,targets} -# 统一设置 Prometheus 目录权限 -sudo chown -R ${PROMETHEUS_UID}:${PROMETHEUS_GID} ${DATA_ROOT}/argus/metric/prometheus -sudo chmod -R 755 ${DATA_ROOT}/argus/metric/prometheus - # 创建 Grafana 目录 echo "创建 Grafana 目录..." sudo mkdir -p ${DATA_ROOT}/argus/metric/grafana/{data,logs,plugins,provisioning/datasources,provisioning/dashboards,data/sessions,data/dashboards,config} -sudo chown -R ${GRAFANA_UID}:${GRAFANA_GID} ${DATA_ROOT}/argus/metric/grafana -sudo chmod -R 755 ${DATA_ROOT}/argus/metric/grafana -# 创建公共配置目录 -echo "创建公共配置目录..." -sudo mkdir -p ${DATA_ROOT}/argus/etc -sudo chown -R ${FTP_UID}:${FTP_GID} ${DATA_ROOT}/argus/etc -sudo chmod -R 755 ${DATA_ROOT}/argus/etc - -# 创建 Agent 目录 -echo "创建 Agent 目录..." -sudo mkdir -p ${DATA_ROOT}/argus/agent -sudo chown -R ${FTP_UID}:${FTP_GID} ${DATA_ROOT}/argus/agent -sudo chmod -R 755 ${DATA_ROOT}/argus/agent +# 统一设置所有目录权限 +echo "设置目录权限..." +sudo chown -R ${ARGUS_BUILD_UID}:${ARGUS_BUILD_GID} ${DATA_ROOT}/argus/metric +sudo chmod -R 755 ${DATA_ROOT}/argus/metric echo "目录初始化完成!" echo "" echo "目录结构:" echo " ${DATA_ROOT}/" -echo " ├── argus/" +echo " ├── argus/ (UID:${ARGUS_BUILD_UID}, GID:${ARGUS_BUILD_GID})" echo " │ ├── metric/" -echo " │ │ ├── ftp/ (UID:${FTP_UID}, GID:${FTP_GID})" -echo " │ │ ├── prometheus/ (UID:${PROMETHEUS_UID}, GID:${PROMETHEUS_GID})" -echo " │ │ └── grafana/ (UID:${GRAFANA_UID}, GID:${GRAFANA_GID})" -echo " │ ├── etc/ (UID:${FTP_UID}, GID:${FTP_GID})" -echo " │ └── agent/ (UID:${FTP_UID}, GID:${FTP_GID})" +echo " │ │ ├── ftp/" +echo " │ │ ├── prometheus/" +echo " │ │ └── grafana/" echo "" echo "您现在可以运行 'docker-compose up -d' 来启动所有服务" diff --git a/src/metric/tests/scripts/common/start-all.sh b/src/metric/tests/scripts/common/start-all.sh index 1b25bcb..c68a4d5 100755 --- a/src/metric/tests/scripts/common/start-all.sh +++ b/src/metric/tests/scripts/common/start-all.sh @@ -151,7 +151,7 @@ else echo "部分镜像缺失,开始构建..." echo "工作目录: $(pwd)" cd "$TEST_DIR" - docker compose build + docker compose build --no-cache # 询问是否保存镜像 echo "" diff --git a/src/metric/tests/scripts/load-images.sh b/src/metric/tests/scripts/load-images.sh index 8eba9ce..27d6ddc 100755 --- a/src/metric/tests/scripts/load-images.sh +++ b/src/metric/tests/scripts/load-images.sh @@ -22,57 +22,38 @@ if [ ! -d "$INPUT_DIR" ]; then exit 1 fi -# 定义要加载的镜像文件和期望的镜像名称 -declare -A IMAGES=( - ["argus-ftp.tar"]="argus-metric-ftp:latest" - ["argus-prometheus.tar"]="argus-metric-prometheus:latest" - ["argus-grafana.tar"]="argus-metric-grafana:latest" - ["test-node.tar"]="ubuntu:22.04" -) - -# 加载镜像 +# 查找所有tar文件并加载 total=0 success=0 -skipped=0 failed=0 -for tar_file in "${!IMAGES[@]}"; do +# 查找目录下所有.tar文件 +tar_files=($(find "$INPUT_DIR" -name "*.tar" -type f 2>/dev/null | sort)) + +if [ ${#tar_files[@]} -eq 0 ]; then + echo "错误: 在目录 $INPUT_DIR 中未找到任何 .tar 文件" + exit 1 +fi + +echo "找到 ${#tar_files[@]} 个镜像文件:" +for tar_file in "${tar_files[@]}"; do + echo " - $(basename "$tar_file")" +done +echo "" + +for tar_file in "${tar_files[@]}"; do total=$((total + 1)) - input_file="${INPUT_DIR}/${tar_file}" - image_name="${IMAGES[$tar_file]}" + tar_filename=$(basename "$tar_file") - echo "[$total] 处理: $tar_file" + echo "[$total] 处理: $tar_filename" - # 检查 tar 文件是否存在 - if [ ! -f "$input_file" ]; then - echo " ✗ 文件不存在: $tar_file" - failed=$((failed + 1)) - echo "" - continue - fi - - # 检查镜像是否已存在 - if docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "^${image_name}$"; then - echo " ⊙ 镜像已存在: $image_name (跳过)" - skipped=$((skipped + 1)) - echo "" - continue - fi - - # 加载镜像 - echo " → 加载镜像..." - if docker load -i "$input_file"; then - # 验证加载后的镜像 - if docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "^${image_name}$"; then - echo " ✓ 加载成功: $image_name" - success=$((success + 1)) - else - echo " ⚠ 加载完成,但镜像名称可能不匹配" - echo " 请检查: docker images | grep '${image_name%:*}'" - success=$((success + 1)) - fi + # 强制加载,不检查镜像是否已存在 + echo " 加载镜像..." + if docker load -i "$tar_file"; then + echo " 加载成功: $tar_filename" + success=$((success + 1)) else - echo " ✗ 加载失败: $tar_file" + echo " 加载失败: $tar_filename" failed=$((failed + 1)) fi echo "" @@ -85,13 +66,12 @@ echo "" echo "统计:" echo " 总计: $total" echo " 成功: $success" -echo " 跳过: $skipped" echo " 失败: $failed" echo "" -# 显示当前的镜像 -echo "当前 Argus 相关镜像:" -docker images | grep -E "REPOSITORY|argus-metric" || echo "未找到 argus-metric 镜像" +# 显示当前所有镜像 +echo "当前所有镜像:" +docker images echo "" if [ $failed -gt 0 ]; then @@ -100,10 +80,6 @@ if [ $failed -gt 0 ]; then fi if [ $success -gt 0 ]; then - echo "✓ 镜像加载成功!" - echo "" - echo "下一步:" - echo " 运行: bash scripts/common/start-all.sh" - echo " 或者: docker-compose up -d" + echo "镜像加载成功!" fi