levalencia commited on
Commit
5a08ed8
·
1 Parent(s): ca54b04

Add environment variable configuration and directory creation for ML libraries

Browse files

- Introduced environment variables for TORCH_HOME, TENSORFLOW_HOME, and KERAS_HOME to manage library directories.
- Implemented robust directory creation with error handling and fallback mechanisms to ensure stability.
- Enhanced logging to provide feedback on directory creation processes and any encountered issues.

Files changed (2) hide show
  1. Dockerfile +5 -2
  2. src/streamlit_app.py +23 -0
Dockerfile CHANGED
@@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y \
10
  && rm -rf /var/lib/apt/lists/*
11
 
12
  # Create necessary directories with proper permissions
13
- RUN mkdir -p /app/.streamlit /tmp/docling_temp /tmp/easyocr_models /tmp/cache /tmp/config /tmp/data /tmp/huggingface /tmp/huggingface_cache /tmp/transformers_cache /tmp/datasets_cache && \
14
  chmod 755 /app/.streamlit && \
15
  chmod 777 /tmp/docling_temp && \
16
  chmod 777 /tmp/easyocr_models && \
@@ -20,7 +20,10 @@ RUN mkdir -p /app/.streamlit /tmp/docling_temp /tmp/easyocr_models /tmp/cache /t
20
  chmod 777 /tmp/huggingface && \
21
  chmod 777 /tmp/huggingface_cache && \
22
  chmod 777 /tmp/transformers_cache && \
23
- chmod 777 /tmp/datasets_cache
 
 
 
24
 
25
  COPY requirements.txt ./
26
  COPY src/ ./src/
 
10
  && rm -rf /var/lib/apt/lists/*
11
 
12
  # Create necessary directories with proper permissions
13
+ RUN mkdir -p /app/.streamlit /tmp/docling_temp /tmp/easyocr_models /tmp/cache /tmp/config /tmp/data /tmp/huggingface /tmp/huggingface_cache /tmp/transformers_cache /tmp/datasets_cache /tmp/torch /tmp/tensorflow /tmp/keras && \
14
  chmod 755 /app/.streamlit && \
15
  chmod 777 /tmp/docling_temp && \
16
  chmod 777 /tmp/easyocr_models && \
 
20
  chmod 777 /tmp/huggingface && \
21
  chmod 777 /tmp/huggingface_cache && \
22
  chmod 777 /tmp/transformers_cache && \
23
+ chmod 777 /tmp/datasets_cache && \
24
+ chmod 777 /tmp/torch && \
25
+ chmod 777 /tmp/tensorflow && \
26
+ chmod 777 /tmp/keras
27
 
28
  COPY requirements.txt ./
29
  COPY src/ ./src/
src/streamlit_app.py CHANGED
@@ -120,6 +120,29 @@ for env_var in hf_dirs:
120
  except Exception as e2:
121
  logging.error(f"Failed to create fallback Hugging Face directory for {env_var}: {e2}")
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  # Log startup information
124
  logging.info("=" * 50)
125
  logging.info("Docling Streamlit App Starting")
 
120
  except Exception as e2:
121
  logging.error(f"Failed to create fallback Hugging Face directory for {env_var}: {e2}")
122
 
123
+ # Additional environment variables for other libraries that might access root directories
124
+ os.environ['TORCH_HOME'] = os.path.join(TEMP_DIR, 'torch')
125
+ os.environ['TENSORFLOW_HOME'] = os.path.join(TEMP_DIR, 'tensorflow')
126
+ os.environ['KERAS_HOME'] = os.path.join(TEMP_DIR, 'keras')
127
+ os.environ['MLFLOW_TRACKING_URI'] = 'file:' + os.path.join(TEMP_DIR, 'mlruns')
128
+
129
+ # Create additional library directories
130
+ lib_dirs = ['TORCH_HOME', 'TENSORFLOW_HOME', 'KERAS_HOME']
131
+ for env_var in lib_dirs:
132
+ try:
133
+ os.makedirs(os.environ[env_var], exist_ok=True)
134
+ logging.info(f"Created library directory for {env_var}: {os.environ[env_var]}")
135
+ except Exception as e:
136
+ logging.warning(f"Could not create library directory for {env_var}: {e}")
137
+ # Fallback to /tmp
138
+ fallback_path = os.path.join('/tmp', env_var.lower())
139
+ os.environ[env_var] = fallback_path
140
+ try:
141
+ os.makedirs(fallback_path, exist_ok=True)
142
+ logging.info(f"Using fallback library directory for {env_var}: {fallback_path}")
143
+ except Exception as e2:
144
+ logging.error(f"Failed to create fallback library directory for {env_var}: {e2}")
145
+
146
  # Log startup information
147
  logging.info("=" * 50)
148
  logging.info("Docling Streamlit App Starting")