Skip to main content
Glama
docker-test.mjs5.12 kB
#!/usr/bin/env node /** * 🐳 MCP TAILWIND - DOCKER TEST SCRIPT * Build và test Docker container */ import { spawn } from 'child_process'; import { existsSync } from 'fs'; console.log('🐳 MCP TAILWIND - DOCKER BUILD & TEST'); console.log('='.repeat(50)); console.log(`📅 Bắt đầu: ${new Date().toLocaleTimeString()} ${new Date().toLocaleDateString()}`); // Kiểm tra Docker files console.log('\n📋 Kiểm tra Docker files...'); const dockerFiles = [ 'Dockerfile', 'docker-compose.yml', '.dockerignore', 'package.json', 'mcp.json' ]; let filesReady = 0; dockerFiles.forEach(file => { if (existsSync(file)) { console.log(` ✅ ${file}`); filesReady++; } else { console.log(` ❌ ${file} - Missing`); } }); if (filesReady !== dockerFiles.length) { console.log('\n❌ Thiếu files cần thiết cho Docker build'); process.exit(1); } console.log('\n🔨 Bắt đầu Docker build...'); // Build Docker image function runDockerCommand(command, args, description) { return new Promise((resolve, reject) => { console.log(`\n${description}...`); console.log(`💻 Command: ${command} ${args.join(' ')}`); const startTime = Date.now(); const child = spawn(command, args, { stdio: 'pipe', cwd: process.cwd() }); let output = ''; let errorOutput = ''; child.stdout.on('data', (data) => { const text = data.toString(); output += text; // Show real-time progress for docker build if (text.includes('Step') || text.includes('Successfully') || text.includes('ERROR')) { console.log(` 📦 ${text.trim()}`); } }); child.stderr.on('data', (data) => { const text = data.toString(); errorOutput += text; if (text.includes('ERROR') || text.includes('WARN')) { console.log(` ⚠️ ${text.trim()}`); } }); child.on('close', (code) => { const duration = Date.now() - startTime; if (code === 0) { console.log(` ✅ ${description} - SUCCESS (${duration}ms)`); resolve({ success: true, output, duration }); } else { console.log(` ❌ ${description} - FAILED (${duration}ms)`); if (errorOutput) { console.log(` Error details: ${errorOutput.slice(0, 300)}...`); } resolve({ success: false, output: errorOutput, duration }); } }); }); } async function runDockerTests() { try { // 1. Build Docker image const buildResult = await runDockerCommand('docker', [ 'build', '-t', 'mcp-tailwind-gemini:test', '--target', 'production', '.' ], '🔨 Building Docker image'); if (!buildResult.success) { console.log('\n❌ Docker build failed!'); return false; } // 2. Test image info console.log('\n📊 Kiểm tra Docker image...'); const imageResult = await runDockerCommand('docker', [ 'images', 'mcp-tailwind-gemini:test' ], '📊 Getting image info'); // 3. Test container run (quick test) console.log('\n🚀 Test container run...'); const runResult = await runDockerCommand('docker', [ 'run', '--rm', '-e', 'NODE_ENV=test', 'mcp-tailwind-gemini:test', 'node', '-e', 'console.log("MCP Container Test: OK"); process.exit(0)' ], '🧪 Testing container execution'); if (!runResult.success) { console.log('\n❌ Container run test failed!'); return false; } // 4. Test with docker-compose (dry run) console.log('\n🐙 Test Docker Compose config...'); const composeResult = await runDockerCommand('docker-compose', [ 'config' ], '🔧 Validating docker-compose.yml'); return true; } catch (error) { console.log(`\n❌ Docker test error: ${error.message}`); return false; } } // Run tests runDockerTests().then(success => { console.log('\n' + '='.repeat(50)); console.log('📊 DOCKER TEST RESULTS'); console.log('='.repeat(50)); if (success) { console.log('🎉 DOCKER BUILD & TEST SUCCESSFUL!'); console.log('✅ Image built successfully'); console.log('✅ Container can run'); console.log('✅ Docker Compose config valid'); console.log('\n📞 Next steps:'); console.log(' 🚀 docker-compose up -d # Start in background'); console.log(' 🔍 docker-compose logs -f # View logs'); console.log(' 📊 docker-compose ps # Check status'); console.log(' 🛑 docker-compose down # Stop services'); console.log(' 🧪 docker run --rm mcp-tailwind-gemini:test # Test run'); } else { console.log('❌ DOCKER BUILD/TEST FAILED'); console.log('🔧 Check the errors above'); console.log('💡 Common fixes:'); console.log(' • Make sure Docker is running'); console.log(' • Check Dockerfile syntax'); console.log(' • Ensure all dependencies in package.json'); console.log(' • Verify build process works locally'); } console.log('\n' + '='.repeat(50)); }).catch(console.error);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tai-DT/mcp-tailwind-gemini'

If you have feedback or need assistance with the MCP directory API, please join our Discord server