#!/bin/bash # Dockerfile.runpod Update Verification Script # Date: 2025-10-23 echo "==========================================" echo "Dockerfile.runpod Update Verification" echo "==========================================" echo "" # 1. Check for AWS references echo "1. Checking for AWS/S3 references..." if ! grep -iq "aws\|s3\|amazon" Dockerfile.runpod 2>/dev/null; then echo " ✅ PASS: Zero AWS/S3/Amazon references found" else echo " ❌ FAIL: Found AWS/S3/Amazon references" exit 1 fi echo "" # 2. Check for Tesla V100 reference echo "2. Checking for Tesla V100 reference..." if grep -q "Tesla V100" Dockerfile.runpod 2>/dev/null; then V100_COUNT=$(grep -c "Tesla V100" Dockerfile.runpod) echo " ✅ PASS: Tesla V100 documented ($V100_COUNT references)" else echo " ❌ FAIL: Tesla V100 not found in Dockerfile" exit 1 fi echo "" # 3. Check for private Docker Hub registry echo "3. Checking for private Docker Hub registry (jgrusewski/foxhunt)..." REGISTRY_COUNT=$(grep -c "jgrusewski/foxhunt" Dockerfile.runpod 2>/dev/null) if [ "$REGISTRY_COUNT" -gt 5 ]; then echo " ✅ PASS: Private registry documented ($REGISTRY_COUNT references)" else echo " ❌ FAIL: Private registry not consistently used (found $REGISTRY_COUNT, need >5)" exit 1 fi echo "" # 4. Check for embedded test data echo "4. Checking for embedded test data..." if grep -q "COPY test_data/\*.parquet /workspace/test_data/" Dockerfile.runpod; then echo " ✅ PASS: Test data COPY instruction found" else echo " ❌ FAIL: Test data COPY instruction missing" exit 1 fi echo "" # 5. Verify test data files exist echo "5. Verifying test data files exist..." TEST_DATA_COUNT=$(ls test_data/*.parquet 2>/dev/null | wc -l) if [ "$TEST_DATA_COUNT" -eq 9 ]; then echo " ✅ PASS: All 9 Parquet files present" ls -1 test_data/*.parquet | sed 's/^/ - /' else echo " ❌ FAIL: Expected 9 Parquet files, found $TEST_DATA_COUNT" exit 1 fi echo "" # 6. Check test data size echo "6. Checking test data size..." TEST_DATA_SIZE=$(du -sm test_data 2>/dev/null | awk '{print $1}') if [ "$TEST_DATA_SIZE" -lt 20 ]; then echo " ✅ PASS: Test data size is ${TEST_DATA_SIZE}MB (optimal)" else echo " ⚠️ WARNING: Test data size is ${TEST_DATA_SIZE}MB (larger than expected)" fi echo "" # 7. Check VOLUME directive echo "7. Checking VOLUME directive (test_data should NOT be present)..." if grep 'VOLUME' Dockerfile.runpod | grep -q 'test_data'; then echo " ❌ FAIL: test_data still in VOLUME directive (should be removed)" exit 1 else echo " ✅ PASS: test_data removed from VOLUME directive" fi echo "" # 8. Verify entry point echo "8. Verifying default entry point..." if grep -q 'ENTRYPOINT.*train_tft_parquet' Dockerfile.runpod; then echo " ✅ PASS: Default entry point set to train_tft_parquet" else echo " ❌ FAIL: Entry point not configured correctly" exit 1 fi echo "" # 9. Check for private registry instructions echo "9. Checking for private registry instructions..." if grep -q "PRIVATE" Dockerfile.runpod; then PRIVATE_COUNT=$(grep -c "PRIVATE" Dockerfile.runpod) echo " ✅ PASS: Private registry instructions documented ($PRIVATE_COUNT mentions)" else echo " ❌ FAIL: Private registry instructions missing" exit 1 fi echo "" # 10. Final summary echo "==========================================" echo "✅ ALL CHECKS PASSED" echo "==========================================" echo "" echo "Summary:" echo " - Zero AWS/S3 references" echo " - Tesla V100 documented as minimum GPU" echo " - Docker Hub registry: jgrusewski/foxhunt (PRIVATE)" echo " - 9 Parquet files embedded (~${TEST_DATA_SIZE}MB total)" echo " - VOLUME directive updated (test_data removed)" echo " - Entry point configured for TFT training" echo "" echo "Next Steps:" echo " 1. Build image: docker build -f Dockerfile.runpod -t jgrusewski/foxhunt:latest ." echo " 2. Test locally: docker run --gpus all jgrusewski/foxhunt:latest" echo " 3. Push to Docker Hub: docker push jgrusewski/foxhunt:latest" echo " 4. Set repository to PRIVATE in Docker Hub" echo " 5. Deploy on Runpod with Tesla V100" echo ""