move jwt key generation to startup
This commit is contained in:
parent
e7f6010ef6
commit
d7614f6dfc
2 changed files with 34 additions and 8 deletions
|
|
@ -22,14 +22,6 @@ RUN uv run python warm_up_docling.py && rm warm_up_docling.py 2506.08231v1.pdf
|
||||||
# Copy Python source
|
# Copy Python source
|
||||||
COPY src/ ./src/
|
COPY src/ ./src/
|
||||||
|
|
||||||
# Generate RSA keys for JWT signing if they don't exist
|
|
||||||
RUN mkdir -p keys && \
|
|
||||||
if [ ! -f keys/private_key.pem ]; then \
|
|
||||||
openssl genrsa -out keys/private_key.pem 2048 && \
|
|
||||||
openssl rsa -in keys/private_key.pem -pubout -out keys/public_key.pem && \
|
|
||||||
echo "Generated RSA keys for JWT signing"; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Expose backend port
|
# Expose backend port
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
|
|
||||||
|
|
|
||||||
34
src/main.py
34
src/main.py
|
|
@ -1,6 +1,8 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import atexit
|
import atexit
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from starlette.applications import Starlette
|
from starlette.applications import Starlette
|
||||||
from starlette.routing import Route
|
from starlette.routing import Route
|
||||||
|
|
@ -88,6 +90,35 @@ async def init_index():
|
||||||
else:
|
else:
|
||||||
print(f"Index '{knowledge_filter_index_name}' already exists, skipping creation.")
|
print(f"Index '{knowledge_filter_index_name}' already exists, skipping creation.")
|
||||||
|
|
||||||
|
def generate_jwt_keys():
|
||||||
|
"""Generate RSA keys for JWT signing if they don't exist"""
|
||||||
|
keys_dir = "keys"
|
||||||
|
private_key_path = os.path.join(keys_dir, "private_key.pem")
|
||||||
|
public_key_path = os.path.join(keys_dir, "public_key.pem")
|
||||||
|
|
||||||
|
# Create keys directory if it doesn't exist
|
||||||
|
os.makedirs(keys_dir, exist_ok=True)
|
||||||
|
|
||||||
|
# Generate keys if they don't exist
|
||||||
|
if not os.path.exists(private_key_path):
|
||||||
|
try:
|
||||||
|
# Generate private key
|
||||||
|
subprocess.run([
|
||||||
|
"openssl", "genrsa", "-out", private_key_path, "2048"
|
||||||
|
], check=True, capture_output=True)
|
||||||
|
|
||||||
|
# Generate public key
|
||||||
|
subprocess.run([
|
||||||
|
"openssl", "rsa", "-in", private_key_path, "-pubout", "-out", public_key_path
|
||||||
|
], check=True, capture_output=True)
|
||||||
|
|
||||||
|
print("Generated RSA keys for JWT signing")
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print(f"Failed to generate RSA keys: {e}")
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
print("RSA keys already exist, skipping generation")
|
||||||
|
|
||||||
async def init_index_when_ready():
|
async def init_index_when_ready():
|
||||||
"""Initialize OpenSearch index when it becomes available"""
|
"""Initialize OpenSearch index when it becomes available"""
|
||||||
try:
|
try:
|
||||||
|
|
@ -100,6 +131,9 @@ async def init_index_when_ready():
|
||||||
|
|
||||||
def initialize_services():
|
def initialize_services():
|
||||||
"""Initialize all services and their dependencies"""
|
"""Initialize all services and their dependencies"""
|
||||||
|
# Generate JWT keys if they don't exist
|
||||||
|
generate_jwt_keys()
|
||||||
|
|
||||||
# Initialize clients
|
# Initialize clients
|
||||||
clients.initialize()
|
clients.initialize()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue