| |
| """ |
| Simple app.py that runs the Docker container for OpenCurro Backend |
| on Hugging Face Spaces |
| """ |
|
|
| import subprocess |
| import sys |
| import time |
|
|
| DOCKER_IMAGE_NAME = "opencurro-backend" |
| DOCKER_CONTAINER_NAME = "opencurro-backend-container" |
|
|
| def run_docker(): |
| """Build and run Docker container""" |
| try: |
| print("π³ Building Docker image...") |
| |
| |
| build_cmd = [ |
| "docker", "build", |
| "-f", "Dockerfile.hf-backend", |
| "-t", DOCKER_IMAGE_NAME, |
| "." |
| ] |
| |
| result = subprocess.run(build_cmd, check=True) |
| print("β
Docker image built successfully") |
| |
| |
| try: |
| subprocess.run( |
| ["docker", "rm", "-f", DOCKER_CONTAINER_NAME], |
| capture_output=True |
| ) |
| except: |
| pass |
| |
| |
| print("π Starting Docker container...") |
| run_cmd = [ |
| "docker", "run", |
| "--name", DOCKER_CONTAINER_NAME, |
| "-p", "8000:8000", |
| DOCKER_IMAGE_NAME |
| ] |
| |
| subprocess.run(run_cmd, check=True) |
| |
| except subprocess.CalledProcessError as e: |
| print(f"β Error: {e}") |
| sys.exit(1) |
| except KeyboardInterrupt: |
| print("\nπ Shutting down...") |
| subprocess.run(["docker", "stop", DOCKER_CONTAINER_NAME], capture_output=True) |
| subprocess.run(["docker", "rm", DOCKER_CONTAINER_NAME], capture_output=True) |
|
|
| if __name__ == "__main__": |
| print("π― OpenCurro AI Backend - Docker Runner") |
| print("=" * 50) |
| run_docker() |
|
|