{"repo": "adhimiw/etl-open-router-ai", "files": {"docker-compose.yml": {"caaee88c009bb9122b44044ef377d1a59273c4a4": {"t": 1785747415.9780526, "n": 4909, "h": "ed36180c102a2f32", "c": "version: '3.8'\n\nservices:\n # PostgreSQL Database\n postgres:\n image: postgres:15-alpine\n container_name: eetl_postgres\n environment:\n POSTGRES_DB: eetl_db\n POSTGRES_USER: eetl_user\n POSTGRES_PASSWORD: eetl_password\n volumes:\n - postgres_data:/var/lib/postgresql/data\n - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql\n ports:\n - \"5432:5432\"\n networks:\n - eetl_network\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U eetl_user -d eetl_db\"]\n interval: 30s\n timeout: 10s\n retries: 3\n\n # Redis for caching and Celery\n redis:\n image: redis:7-alpine\n container_name: eetl_redis\n ports:\n - \"6379:6379\"\n volumes:\n - redis_data:/data\n networks:\n - eetl_network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 30s\n timeout: 10s\n retries: 3\n\n # Django Backend\n backend:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: eetl_backend\n environment:\n - DEBUG=True\n - SECRET_KEY=your-secret-key-here\n - DATABASE_URL=postgresql://eetl_user:eetl_password@postgres:5432/eetl_db\n - REDIS_URL=redis://redis:6379/0\n - OPENROUTER_API_KEY=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\n - OPENROUTER_MODEL=deepseek/deepseek-chat\n - ALLOWED_HOSTS=localhost,127.0.0.1,backend\n - CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000\n volumes:\n - ./backend:/app\n - media_files:/app/media\n - static_files:/app/staticfiles\n - upload_files:/app/uploads\n - chroma_data:/app/chroma_db\n - logs:/app/logs\n ports:\n - \"8000:8000\"\n depends_on:\n postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - eetl_network\n command: >\n sh -c \"python manage.py migrate &&\n python manage.py collectstatic --noinput &&\n python manage.py runserver 0.0.0.0:8000\"\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/api/health/\"]\n interval: 30s\n timeout: 10s\n retries: 3\n\n # Celery Worker\n celery_worker:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: eetl_celery_worker\n environment:\n - DEBUG=True\n - SECRET_KEY=your-secret-key-here\n - DATABASE_URL=postgresql://eetl_user:eetl_password@postgres:5432/eetl_db\n - REDIS_URL=redis://redis:6379/0\n - CELERY_BROKER_URL=redis://redis:6379/0\n - CELERY_RESULT_BACKEND=redis://redis:6379/0\n - OPENROUTER_API_KEY=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\n volumes:\n - ./backend:/app\n - media_files:/app/media\n - upload_files:/app/uploads\n - chroma_data:/app/chroma_db\n - logs:/app/logs\n depends_on:\n postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - eetl_network\n command: celery -A core worker --loglevel=info\n\n # Celery Beat (Scheduler)\n celery_beat:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: eetl_celery_beat\n environment:\n - DEBUG=True\n - SECRET_KEY=your-secret-key-here\n - DATABASE_URL=postgresql://eetl_user:eetl_password@postgres:5432/eetl_db\n - REDIS_URL=redis://redis:6379/0\n - CELERY_BROKER_URL=redis://redis:6379/0\n - CELERY_RESULT_BACKEND=redis://redis:6379/0\n volumes:\n - ./backend:/app\n - celery_beat_data:/app/celerybeat-schedule\n - logs:/app/logs\n depends_on:\n postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - eetl_network\n command: celery -A core beat --loglevel=info\n\n # React Frontend\n frontend:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n target: development\n container_name: eetl_frontend\n environment:\n - NODE_ENV=development\n - VITE_API_URL=http://localhost:8000/api\n volumes:\n - ./frontend:/app\n - /app/node_modules\n ports:\n - \"3000:3000\"\n depends_on:\n - backend\n networks:\n - eetl_network\n command: npm run dev\n\n # Nginx (Production only)\n nginx:\n image: nginx:alpine\n container_name: eetl_nginx\n ports:\n - \"80:80\"\n - \"443:443\"\n volumes:\n - ./nginx/nginx.conf:/etc/nginx/nginx.conf\n - ./nginx/default.conf:/etc/nginx/conf.d/default.conf\n - static_files:/var/www/static\n - media_files:/var/www/media\n - ./ssl:/etc/nginx/ssl\n depends_on:\n - backend\n - frontend\n networks:\n - eetl_network\n profiles:\n - production\n\nvolumes:\n postgres_data:\n redis_data:\n media_files:\n static_files:\n upload_files:\n chroma_data:\n celery_beat_data:\n logs:\n\nnetworks:\n eetl_network:\n driver: bridge\n"}, "823d1ce436243f37e1883ac03916d4761dab15d0": {"t": 1785773160.7554808, "n": 4909, "h": "ed36180c102a2f32", "c": "version: '3.8'\n\nservices:\n # PostgreSQL Database\n postgres:\n image: postgres:15-alpine\n container_name: eetl_postgres\n environment:\n POSTGRES_DB: eetl_db\n POSTGRES_USER: eetl_user\n POSTGRES_PASSWORD: eetl_password\n volumes:\n - postgres_data:/var/lib/postgresql/data\n - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql\n ports:\n - \"5432:5432\"\n networks:\n - eetl_network\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U eetl_user -d eetl_db\"]\n interval: 30s\n timeout: 10s\n retries: 3\n\n # Redis for caching and Celery\n redis:\n image: redis:7-alpine\n container_name: eetl_redis\n ports:\n - \"6379:6379\"\n volumes:\n - redis_data:/data\n networks:\n - eetl_network\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 30s\n timeout: 10s\n retries: 3\n\n # Django Backend\n backend:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: eetl_backend\n environment:\n - DEBUG=True\n - SECRET_KEY=your-secret-key-here\n - DATABASE_URL=postgresql://eetl_user:eetl_password@postgres:5432/eetl_db\n - REDIS_URL=redis://redis:6379/0\n - OPENROUTER_API_KEY=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\n - OPENROUTER_MODEL=deepseek/deepseek-chat\n - ALLOWED_HOSTS=localhost,127.0.0.1,backend\n - CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000\n volumes:\n - ./backend:/app\n - media_files:/app/media\n - static_files:/app/staticfiles\n - upload_files:/app/uploads\n - chroma_data:/app/chroma_db\n - logs:/app/logs\n ports:\n - \"8000:8000\"\n depends_on:\n postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - eetl_network\n command: >\n sh -c \"python manage.py migrate &&\n python manage.py collectstatic --noinput &&\n python manage.py runserver 0.0.0.0:8000\"\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/api/health/\"]\n interval: 30s\n timeout: 10s\n retries: 3\n\n # Celery Worker\n celery_worker:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: eetl_celery_worker\n environment:\n - DEBUG=True\n - SECRET_KEY=your-secret-key-here\n - DATABASE_URL=postgresql://eetl_user:eetl_password@postgres:5432/eetl_db\n - REDIS_URL=redis://redis:6379/0\n - CELERY_BROKER_URL=redis://redis:6379/0\n - CELERY_RESULT_BACKEND=redis://redis:6379/0\n - OPENROUTER_API_KEY=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\n volumes:\n - ./backend:/app\n - media_files:/app/media\n - upload_files:/app/uploads\n - chroma_data:/app/chroma_db\n - logs:/app/logs\n depends_on:\n postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - eetl_network\n command: celery -A core worker --loglevel=info\n\n # Celery Beat (Scheduler)\n celery_beat:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: eetl_celery_beat\n environment:\n - DEBUG=True\n - SECRET_KEY=your-secret-key-here\n - DATABASE_URL=postgresql://eetl_user:eetl_password@postgres:5432/eetl_db\n - REDIS_URL=redis://redis:6379/0\n - CELERY_BROKER_URL=redis://redis:6379/0\n - CELERY_RESULT_BACKEND=redis://redis:6379/0\n volumes:\n - ./backend:/app\n - celery_beat_data:/app/celerybeat-schedule\n - logs:/app/logs\n depends_on:\n postgres:\n condition: service_healthy\n redis:\n condition: service_healthy\n networks:\n - eetl_network\n command: celery -A core beat --loglevel=info\n\n # React Frontend\n frontend:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n target: development\n container_name: eetl_frontend\n environment:\n - NODE_ENV=development\n - VITE_API_URL=http://localhost:8000/api\n volumes:\n - ./frontend:/app\n - /app/node_modules\n ports:\n - \"3000:3000\"\n depends_on:\n - backend\n networks:\n - eetl_network\n command: npm run dev\n\n # Nginx (Production only)\n nginx:\n image: nginx:alpine\n container_name: eetl_nginx\n ports:\n - \"80:80\"\n - \"443:443\"\n volumes:\n - ./nginx/nginx.conf:/etc/nginx/nginx.conf\n - ./nginx/default.conf:/etc/nginx/conf.d/default.conf\n - static_files:/var/www/static\n - media_files:/var/www/media\n - ./ssl:/etc/nginx/ssl\n depends_on:\n - backend\n - frontend\n networks:\n - eetl_network\n profiles:\n - production\n\nvolumes:\n postgres_data:\n redis_data:\n media_files:\n static_files:\n upload_files:\n chroma_data:\n celery_beat_data:\n logs:\n\nnetworks:\n eetl_network:\n driver: bridge\n"}}}}