refactor: Simplify Dockerfile requirements and enhance health check script with API key validation and connectivity checks

This commit is contained in:
OhMyApps
2025-06-25 17:54:04 +02:00
parent 8ff8e06bf9
commit 331706af21
3 changed files with 82 additions and 8 deletions

View File

@@ -11,7 +11,22 @@ echo -e "${GREEN}=== Deploying Zen MCP Server ===${NC}"
# Function to check if required environment variables are set
check_env_vars() {
local required_vars=("GOOGLE_API_KEY" "OPENAI_API_KEY")
# At least one of these API keys must be set
local required_vars=("GEMINI_API_KEY" "GOOGLE_API_KEY" "OPENAI_API_KEY" "XAI_API_KEY" "DIAL_API_KEY" "OPENROUTER_API_KEY")
local has_api_key=false
for var in "${required_vars[@]}"; do
if [[ -n "${!var:-}" ]]; then
has_api_key=true
break
fi
done
if [[ "$has_api_key" == false ]]; then
echo -e "${RED}Error: At least one API key must be set in your .env file${NC}"
printf ' %s\n' "${required_vars[@]}"
exit 1
fi
local missing_vars=()
for var in "${required_vars[@]}"; do
@@ -43,6 +58,29 @@ fi
# Check required environment variables
check_env_vars
# Exponential backoff health check function
wait_for_health() {
local max_attempts=6
local attempt=1
local delay=2
while (( attempt <= max_attempts )); do
status=$(docker-compose ps -q zen-mcp | xargs docker inspect -f "{{.State.Health.Status}}" 2>/dev/null || echo "unavailable")
if [[ "$status" == "healthy" ]]; then
return 0
fi
echo -e "${YELLOW}Waiting for service to be healthy... (attempt $attempt/${max_attempts}, retrying in ${delay}s)${NC}"
sleep $delay
delay=$(( delay * 2 ))
attempt=$(( attempt + 1 ))
done
echo -e "${RED}Service failed to become healthy after $max_attempts attempts${NC}"
echo -e "${YELLOW}Checking logs:${NC}"
docker-compose logs zen-mcp
exit 1
}
# Create logs directory if it doesn't exist
mkdir -p logs