#!/bin/bash set -e # 配置变量 VOLUME_NAME="webws-data" SOURCE_DIR="/vol1/1000/home/ws/PBMDB" COMPOSE_FILE="../ws/docker-compose.yml" echo "==========================================" echo "部署 Traefik + Nginx 静态网站" echo "==========================================" # 1. 检查源目录是否存在 if [ ! -d "$SOURCE_DIR" ]; then echo "❌ 错误: 源目录不存在: $SOURCE_DIR" exit 1 fi echo "✓ 源目录存在: $SOURCE_DIR" # 2. 创建网络(如果不存在) if ! docker network inspect frontend >/dev/null 2>&1; then echo "📡 创建 Docker 网络: frontend" docker network create frontend else echo "✓ Docker 网络已存在: frontend" fi # 3. 检查并创建外部卷 if ! docker volume inspect "$VOLUME_NAME" >/dev/null 2>&1; then echo "📦 创建 Docker Volume: $VOLUME_NAME" docker volume create "$VOLUME_NAME" else echo "✓ Docker Volume 已存在: $VOLUME_NAME" fi # 4. 复制文件到 Volume echo "📁 复制网站文件到 Volume..." docker run --rm \ -v "$SOURCE_DIR:/source:ro" \ -v "$VOLUME_NAME:/target" \ alpine sh -c " echo '清理旧文件...' rm -rf /target/* echo '复制新文件...' cp -r /source/. /target/ echo '设置权限...' chmod -R 755 /target find /target -type f -exec chmod 644 {} \; echo '文件列表:' ls -lah /target/ " if [ $? -eq 0 ]; then echo "✓ 文件复制成功" else echo "❌ 文件复制失败" exit 1 fi # 5. 启动服务 echo "🚀 启动 Docker Compose 服务..." docker compose -f "$COMPOSE_FILE" up -d # 6. 等待服务启动 echo "⏳ 等待服务启动..." sleep 3 # 7. 检查服务状态 echo "" echo "==========================================" echo "服务状态:" echo "==========================================" docker compose -f "$COMPOSE_FILE" ps # 8. 验证文件 echo "" echo "==========================================" echo "验证 Volume 中的文件:" echo "==========================================" docker run --rm -v "$VOLUME_NAME:/data" alpine ls -lah /data/ # 9. 显示日志 echo "" echo "==========================================" echo "查看 Nginx 日志 (Ctrl+C 退出):" echo "==========================================" docker compose -f "$COMPOSE_FILE" logs -f nginx-webws