#!/bin/bash # 初始化目录脚本 # 用于创建所有必要的数据目录并设置正确的权限 set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # 加载 .env 文件(如果存在) if [ -f .env ]; then echo "加载 .env 配置文件..." source .env 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} DATA_ROOT=${DATA_ROOT:-./data} echo "开始初始化目录结构..." echo "数据目录: ${DATA_ROOT}" echo "" # 创建 FTP 目录 echo "创建 FTP 目录..." sudo mkdir -p ${DATA_ROOT}/ftp/share sudo chown -R ${FTP_UID}:${FTP_GID} ${DATA_ROOT}/ftp sudo chmod -R 755 ${DATA_ROOT}/ftp # 创建 Prometheus 目录 echo "创建 Prometheus 目录..." sudo mkdir -p ${DATA_ROOT}/prometheus/{data,rules,targets} # 创建默认的 targets 文件(先创建文件再改权限) if [ ! -f "${DATA_ROOT}/prometheus/targets/node_exporter.json" ]; then echo "创建默认 node_exporter targets..." echo '[ { "targets": [], "labels": { "job": "node" } } ]' | sudo tee ${DATA_ROOT}/prometheus/targets/node_exporter.json > /dev/null fi if [ ! -f "${DATA_ROOT}/prometheus/targets/dcgm_exporter.json" ]; then echo "创建默认 dcgm_exporter targets..." echo '[ { "targets": [], "labels": { "job": "dcgm" } } ]' | sudo tee ${DATA_ROOT}/prometheus/targets/dcgm_exporter.json > /dev/null fi # 统一设置 Prometheus 目录权限 sudo chown -R ${PROMETHEUS_UID}:${PROMETHEUS_GID} ${DATA_ROOT}/prometheus sudo chmod -R 755 ${DATA_ROOT}/prometheus # 创建 Grafana 目录 echo "创建 Grafana 目录..." sudo mkdir -p ${DATA_ROOT}/grafana/{data,logs,plugins,provisioning/datasources,provisioning/dashboards,data/sessions,data/dashboards,config} sudo chown -R ${GRAFANA_UID}:${GRAFANA_GID} ${DATA_ROOT}/grafana sudo chmod -R 755 ${DATA_ROOT}/grafana # 创建公共配置目录 sudo mkdir -p ${DATA_ROOT}/etc sudo chown -R ${FTP_UID}:${FTP_GID} ${DATA_ROOT}/etc sudo chmod -R 755 ${DATA_ROOT}/etc echo "目录初始化完成!" echo "" echo "目录结构:" echo " ${DATA_ROOT}/" 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 "" echo "您现在可以运行 'docker-compose up -d' 来启动所有服务"