From 036d2e2fd9fdd591197c7872c273b3199229eca9 Mon Sep 17 00:00:00 2001 From: zt195510 <1033566918@qq.com> Date: Mon, 23 Jun 2025 14:14:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DOCKER_DEPLOY.md | 59 +++++++++++++++++++++++++++++++++++++-- docker-compose.yml | 2 -- scripts/91writing.service | 15 ++++++++++ scripts/debug.bat | 53 +++++++++++++++++++++++++++++++++++ scripts/debug.sh | 45 +++++++++++++++++++++++++++++ scripts/docker-run-dev.sh | 50 +++++++++++++++++++++++++++++++++ vite.config.js | 8 +++++- 7 files changed, 226 insertions(+), 6 deletions(-) create mode 100644 scripts/91writing.service create mode 100644 scripts/debug.bat create mode 100644 scripts/debug.sh create mode 100644 scripts/docker-run-dev.sh diff --git a/DOCKER_DEPLOY.md b/DOCKER_DEPLOY.md index 391ccd8..c21c4f8 100644 --- a/DOCKER_DEPLOY.md +++ b/DOCKER_DEPLOY.md @@ -63,8 +63,61 @@ docker run -d -p 80:80 --name 91writing-prod 91writing:prod ## 故障排查 +### 快速诊断工具 + +```bash +# Windows +scripts\debug.bat + +# Linux/Mac +chmod +x scripts/debug.sh +./scripts/debug.sh +``` + +### 查看错误日志 + +```bash +# 查看构建过程错误 +docker-compose build --no-cache + +# 查看容器启动日志 +docker-compose logs + +# 实时跟踪日志 +docker-compose logs -f + +# 前台启动查看详细输出 +docker-compose --profile dev up +``` + ### 常见问题 -1. 端口被占用 - 修改 docker-compose.yml 中的端口映射 -2. 构建失败 - 使用 docker builder prune 清理缓存 -3. 容器无法启动 - 查看 docker-compose logs 获取错误信息 \ No newline at end of file +1. **端口被占用** + ```bash + # 检查端口占用 + netstat -tulpn | grep :3000 + # 修改 docker-compose.yml 中的端口映射 + ``` + +2. **构建失败** + ```bash + # 清理构建缓存 + docker builder prune + # 重新构建 + docker-compose build --no-cache + ``` + +3. **容器无法启动** + ```bash + # 查看详细错误信息 + docker-compose logs + # 检查容器状态 + docker-compose ps + ``` + +4. **权限问题(Linux)** + ```bash + # 将用户添加到docker组 + sudo usermod -aG docker $USER + newgrp docker + ``` \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 5a58231..6eb6b16 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: # 开发环境 app-dev: diff --git a/scripts/91writing.service b/scripts/91writing.service new file mode 100644 index 0000000..81320c6 --- /dev/null +++ b/scripts/91writing.service @@ -0,0 +1,15 @@ +[Unit] +Description=91Writing Docker Application +Requires=docker.service +After=docker.service + +[Service] +Type=oneshot +RemainAfterExit=yes +WorkingDirectory=/path/to/91Writing +ExecStart=/usr/bin/docker-compose --profile prod up -d +ExecStop=/usr/bin/docker-compose --profile prod down +TimeoutStartSec=0 + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/scripts/debug.bat b/scripts/debug.bat new file mode 100644 index 0000000..6034302 --- /dev/null +++ b/scripts/debug.bat @@ -0,0 +1,53 @@ +@echo off +chcp 65001 >nul +echo 🔍 91Writing Docker 调试工具 +echo ================================ + +REM 检查Docker状态 +echo 1. 检查Docker状态... +docker info >nul 2>&1 +if %errorlevel% neq 0 ( + echo ❌ Docker未运行或未安装 + pause + exit /b 1 +) else ( + echo ✅ Docker正常运行 +) + +REM 检查Docker Compose +echo 2. 检查Docker Compose... +docker-compose --version >nul 2>&1 +if %errorlevel% neq 0 ( + echo ❌ Docker Compose未安装 + pause + exit /b 1 +) else ( + echo ✅ Docker Compose可用 + docker-compose --version +) + +REM 检查端口占用 +echo 3. 检查端口占用... +echo 检查3000端口: +netstat -an | findstr :3000 +if %errorlevel% neq 0 echo 端口3000空闲 + +echo 检查80端口: +netstat -an | findstr :80 +if %errorlevel% neq 0 echo 端口80空闲 + +REM 检查现有容器 +echo 4. 检查现有容器... +docker-compose ps + +REM 尝试构建镜像 +echo 5. 尝试构建镜像... +docker-compose build + +REM 查看最近的日志 +echo 6. 查看最近的日志... +docker-compose logs --tail=50 + +echo ================================ +echo 调试完成!请查看上述信息来定位问题。 +pause \ No newline at end of file diff --git a/scripts/debug.sh b/scripts/debug.sh new file mode 100644 index 0000000..047b2c9 --- /dev/null +++ b/scripts/debug.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +echo "🔍 91Writing Docker 调试工具" +echo "================================" + +# 检查Docker状态 +echo "1. 检查Docker状态..." +if ! docker info > /dev/null 2>&1; then + echo "❌ Docker未运行或未安装" + exit 1 +else + echo "✅ Docker正常运行" +fi + +# 检查Docker Compose +echo "2. 检查Docker Compose..." +if ! docker-compose --version > /dev/null 2>&1; then + echo "❌ Docker Compose未安装" + exit 1 +else + echo "✅ Docker Compose可用" + docker-compose --version +fi + +# 检查端口占用 +echo "3. 检查端口占用..." +echo "检查3000端口:" +netstat -tulpn 2>/dev/null | grep :3000 || echo "端口3000空闲" +echo "检查80端口:" +netstat -tulpn 2>/dev/null | grep :80 || echo "端口80空闲" + +# 检查现有容器 +echo "4. 检查现有容器..." +docker-compose ps + +# 尝试构建镜像 +echo "5. 尝试构建镜像..." +docker-compose build 2>&1 + +# 查看最近的日志 +echo "6. 查看最近的日志..." +docker-compose logs --tail=50 + +echo "================================" +echo "调试完成!请查看上述信息来定位问题。" \ No newline at end of file diff --git a/scripts/docker-run-dev.sh b/scripts/docker-run-dev.sh new file mode 100644 index 0000000..6f164f2 --- /dev/null +++ b/scripts/docker-run-dev.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +echo "🚀 使用Docker Run启动开发环境..." + +# 检查Docker是否运行 +if ! docker info > /dev/null 2>&1; then + echo "❌ Docker未运行,请先启动Docker" + exit 1 +fi + +# 停止并删除现有容器 +echo "🛑 清理现有容器..." +docker stop 91writing-dev 2>/dev/null || true +docker rm 91writing-dev 2>/dev/null || true + +# 构建开发镜像 +echo "🔨 构建开发镜像..." +docker build --target development -t 91writing:dev . + +if [ $? -ne 0 ]; then + echo "❌ 镜像构建失败" + exit 1 +fi + +# 运行开发容器 +echo "🎯 启动开发容器..." +docker run -d \ + --name 91writing-dev \ + -p 3000:3000 \ + -v $(pwd):/app \ + -v /app/node_modules \ + -e NODE_ENV=development \ + --restart unless-stopped \ + 91writing:dev + +# 等待容器启动 +echo "⏳ 等待容器启动..." +sleep 5 + +# 检查容器状态 +if docker ps | grep -q "91writing-dev"; then + echo "✅ 开发环境启动成功!" + echo "🌐 访问地址: http://localhost:3000" + echo "📋 查看日志: docker logs -f 91writing-dev" + echo "🛑 停止容器: docker stop 91writing-dev" + echo "🗑️ 删除容器: docker rm 91writing-dev" +else + echo "❌ 容器启动失败,查看日志:" + docker logs 91writing-dev +fi \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index 92b3905..a9c2607 100644 --- a/vite.config.js +++ b/vite.config.js @@ -25,6 +25,12 @@ export default defineConfig({ }, server: { port: 3000, - open: true + open: false, + host: '0.0.0.0', + allowedHosts: [ + 'localhost', + '127.0.0.1', + 'abc.ztgametv.cn' + ] } }) \ No newline at end of file