Skip to content

Docker Integration Testing

This document provides comprehensive information about testing the Docker integration for the AI Assistant project.

Test Overview

We've conducted extensive testing of the Docker integration to ensure all services work correctly together. This document covers our testing methodology, results, and known issues.

Test Environment

  • Docker Version: 28.5.1
  • Docker Compose Version: V2 (integrated with Docker CLI)
  • Host OS: Linux
  • Python Version: 3.12-slim (in containers)

Services Tested

1. AI Assistant Application

  • Image: Custom built (ai_assistant-ai-assistant)
  • Port: 8000
  • Health Check: HTTP GET to /
  • Status: ✅ Working

2. Redis

  • Image: redis:7-alpine
  • Port: 6379
  • Health Check: Redis PING command
  • Status: ✅ Working

3. SearXNG

  • Image: searxng/searxng:latest
  • Port: 8080
  • Health Check: HTTP GET to /
  • Status: ❌ Known Issue

Test Results

Docker Build Process

Status: ✅ Passed

The Docker image builds successfully with all dependencies installed. The build process includes: - Python 3.12-slim base image - System dependencies (gcc, g++, curl) - UV package manager - Application dependencies - Non-root user creation

Service Startup and Connectivity

Status: ✅ Passed (AI Assistant & Redis)

All core services start successfully and can communicate with each other: - AI Assistant container starts and becomes healthy - Redis container starts and responds to PING - Inter-service connectivity is working

Service Health Checks

Status: ✅ Passed (AI Assistant & Redis)

Health checks are functioning correctly: - AI Assistant: HTTP GET to / returns 200 - Redis: PING command returns PONG

Application Endpoints

Status: ✅ Passed

The AI Assistant application endpoints are working: - /: Returns JSON status message - /docs: Serves API documentation - Health check endpoint is responding

Redis Connectivity

Status: ✅ Passed

The AI Assistant can successfully connect to Redis: - Connection established from AI Assistant to Redis - Redis commands execute successfully

Development Mode

Status: ✅ Passed

Development mode with hot reload is working: - Services start with development configuration - Debug port (5678) is exposed - Volume mounts work correctly

Known Issues

SearXNG Integration

Status: ❌ Not Working

Issue: SearXNG container fails to start due to invalid settings configuration.

Error: ValueError: Invalid settings.yml

Attempted Solutions: 1. Used custom settings.yml file 2. Tried with default settings (no volume mount) 3. Attempted to override with empty file

Resolution: This issue needs further investigation. For now, SearXNG should be excluded from the Docker setup or run as a separate service.

Test Scripts

Automated Test Script

We've created an automated test script (test_docker.py) that can be used to verify Docker integration:

# Run all tests
python test_docker.py

# Start services before testing
python test_docker.py --start

# Stop services after testing
python test_docker.py --stop

Manual Test Commands

# Build images
docker compose build

# Start services
docker compose up -d

# Check status
docker compose ps

# View logs
docker compose logs -f

# Test application
curl http://localhost:8000/

# Test Redis
docker compose exec redis redis-cli ping

# Stop services
docker compose down

Configuration Issues Found

During testing, we discovered several configuration issues:

  1. UV Cache Permissions: Fixed by changing cache directory from /tmp/uv-cache to /app/.uv-cache

  2. Environment Variables: The application expects specific variable formats:

  3. Redis settings need CACHE_SETTINGS_ prefix
  4. Some variables listed in documentation aren't recognized by the application

  5. Minimal Configuration: Created a minimal environment file (.env.minimal) with only essential variables for testing

Performance Observations

  • Build Time: Initial build takes approximately 2-3 minutes
  • Startup Time: Services start within 10-15 seconds
  • Memory Usage: AI Assistant container uses ~200-300MB RAM
  • Image Size: Final image is ~1.3GB

Recommendations

  1. Fix SearXNG Configuration: Investigate and resolve the SearXNG settings issue

  2. Improve Documentation: Update environment variable documentation to match actual application expectations

  3. Add More Tests: Expand test coverage to include:

  4. Load testing
  5. Failover scenarios
  6. Resource limit testing

  7. Optimize Image Size: Consider multi-stage builds to reduce image size

  8. Add Monitoring: Implement proper monitoring and alerting for production use

Test Environment Files

  • .env.test: Comprehensive test environment
  • .env.minimal: Minimal environment with essential variables only

Troubleshooting Guide

Common Issues and Solutions

  1. Application Fails to Start
  2. Check environment variables
  3. Verify Redis configuration format
  4. Review container logs

  5. Redis Connection Issues

  6. Ensure Redis is running
  7. Check network connectivity
  8. Verify configuration format

  9. Build Failures

  10. Clear Docker cache: docker system prune
  11. Check disk space
  12. Verify dependencies in pyproject.toml

  13. Permission Issues

  14. Check volume mount permissions
  15. Ensure non-root user has access to required directories

Conclusion

The Docker integration for the AI Assistant project is largely successful, with the core application and Redis working correctly in both production and development modes. The main issue is with the SearXNG service, which requires further investigation.

The Docker setup provides a solid foundation for development and deployment, with proper health checks, networking, and configuration management.