Files
KnowledgeBase/docker/validate-env.sh
lizhuoran 3c206e9e06 feat: 新增 Docker 部署支持、Swoole/Octane 集成及相关优化
- 添加 Dockerfile 与多套 docker-compose 配置(开发/生产环境)
- 集成 Laravel Octane (Swoole) 提升性能
- 新增健康检查、监控脚本及部署文档
- 新增 Docker 镜像离线导入包(MySQL/Redis/Meilisearch)
- 优化文档转换、预览服务及队列任务
- 添加 CreateAdminUser 命令与路由健康检查接口
- 新增 Swoole 队列兼容性测试套件

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 15:51:19 +08:00

142 lines
4.3 KiB
Bash
Executable File
Raw 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
# 环境变量验证脚本
# 用于验证Docker部署所需的环境变量是否正确配置
set -e
echo "==================================="
echo "环境变量验证脚本"
echo "==================================="
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 错误计数
ERROR_COUNT=0
# 验证函数
validate_var() {
local var_name=$1
local var_value=$2
local is_required=${3:-true}
local description=$4
if [ -z "$var_value" ]; then
if [ "$is_required" = true ]; then
echo -e "${RED}✗ 错误: $var_name 未设置${NC} - $description"
((ERROR_COUNT++))
else
echo -e "${YELLOW}⚠ 警告: $var_name 未设置${NC} - $description (可选)"
fi
else
echo -e "${GREEN}$var_name 已设置${NC} - $description"
fi
}
# 验证必需的环境变量
echo "检查必需的环境变量..."
echo "-----------------------------------"
validate_var "APP_KEY" "$APP_KEY" true "应用加密密钥"
validate_var "DB_PASSWORD" "$DB_PASSWORD" true "数据库密码"
validate_var "MEILISEARCH_KEY" "$MEILISEARCH_KEY" true "Meilisearch主密钥"
echo ""
echo "检查应用配置..."
echo "-----------------------------------"
validate_var "APP_NAME" "$APP_NAME" false "应用名称"
validate_var "APP_ENV" "$APP_ENV" false "应用环境"
validate_var "APP_DEBUG" "$APP_DEBUG" false "调试模式"
validate_var "APP_URL" "$APP_URL" false "应用URL"
echo ""
echo "检查数据库配置..."
echo "-----------------------------------"
validate_var "DB_CONNECTION" "$DB_CONNECTION" false "数据库连接类型"
validate_var "DB_HOST" "$DB_HOST" false "数据库主机"
validate_var "DB_PORT" "$DB_PORT" false "数据库端口"
validate_var "DB_DATABASE" "$DB_DATABASE" false "数据库名称"
validate_var "DB_USERNAME" "$DB_USERNAME" false "数据库用户名"
echo ""
echo "检查Redis配置..."
echo "-----------------------------------"
validate_var "REDIS_HOST" "$REDIS_HOST" false "Redis主机"
validate_var "REDIS_PORT" "$REDIS_PORT" false "Redis端口"
validate_var "REDIS_PASSWORD" "$REDIS_PASSWORD" false "Redis密码"
echo ""
echo "检查Meilisearch配置..."
echo "-----------------------------------"
validate_var "MEILISEARCH_HOST" "$MEILISEARCH_HOST" false "Meilisearch主机"
validate_var "SCOUT_DRIVER" "$SCOUT_DRIVER" false "搜索驱动"
echo ""
echo "检查邮件配置..."
echo "-----------------------------------"
validate_var "MAIL_MAILER" "$MAIL_MAILER" false "邮件驱动"
if [ "$MAIL_MAILER" = "smtp" ]; then
validate_var "MAIL_HOST" "$MAIL_HOST" true "SMTP主机"
validate_var "MAIL_PORT" "$MAIL_PORT" true "SMTP端口"
validate_var "MAIL_USERNAME" "$MAIL_USERNAME" true "SMTP用户名"
validate_var "MAIL_PASSWORD" "$MAIL_PASSWORD" true "SMTP密码"
fi
echo ""
echo "==================================="
# 检查APP_KEY格式
if [ -n "$APP_KEY" ]; then
if [[ $APP_KEY == base64:* ]]; then
echo -e "${GREEN}✓ APP_KEY 格式正确${NC}"
else
echo -e "${RED}✗ 错误: APP_KEY 格式不正确,应该以 'base64:' 开头${NC}"
((ERROR_COUNT++))
fi
fi
# 检查默认密码
if [ "$DB_PASSWORD" = "secure_password_change_this" ] || [ "$DB_PASSWORD" = "secure_password_change_this_in_production" ]; then
echo -e "${YELLOW}⚠ 警告: 数据库密码使用默认值,建议更改${NC}"
fi
if [ "$MEILISEARCH_KEY" = "your-master-key-change-this-in-production" ]; then
echo -e "${YELLOW}⚠ 警告: Meilisearch密钥使用默认值建议更改${NC}"
fi
# 检查环境特定配置
if [ "$APP_ENV" = "production" ]; then
echo ""
echo "生产环境额外检查..."
echo "-----------------------------------"
if [ "$APP_DEBUG" = "true" ]; then
echo -e "${YELLOW}⚠ 警告: 生产环境不建议启用调试模式${NC}"
fi
if [ "$LOG_LEVEL" = "debug" ]; then
echo -e "${YELLOW}⚠ 警告: 生产环境建议使用 info 或更高级别的日志${NC}"
fi
fi
echo "==================================="
# 输出结果
if [ $ERROR_COUNT -eq 0 ]; then
echo -e "${GREEN}✓ 环境变量验证通过!${NC}"
echo "可以继续进行Docker部署。"
exit 0
else
echo -e "${RED}✗ 发现 $ERROR_COUNT 个错误${NC}"
echo "请修复上述错误后再进行部署。"
exit 1
fi