From 4bf58513bce8777631aee792808eed91dbcd1ab8 Mon Sep 17 00:00:00 2001 From: Jamitz Date: Tue, 6 Jan 2026 16:51:05 +0000 Subject: [PATCH] update --- backend/Dockerfile | 8 ++++++-- backend/app/database.py | 10 +++++++++- backend/start.sh | 21 +++++++++++++++++++++ compose.yaml | 5 ++--- 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 backend/start.sh diff --git a/backend/Dockerfile b/backend/Dockerfile index c365df9..759d54a 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -18,6 +18,10 @@ COPY --from=builder /usr/local/bin /usr/local/bin # Copy application code COPY app ./app +# Copy startup script +COPY start.sh /app/start.sh +RUN chmod +x /app/start.sh + # Create data directory for SQLite and other persistent data RUN mkdir -p /app/data @@ -31,5 +35,5 @@ HEALTHCHECK --interval=10s --timeout=5s --start-period=40s --retries=3 \ EXPOSE 8000 -# Run with production settings -CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--proxy-headers", "--forwarded-allow-ips", "*"] +# Run with startup script +CMD ["/app/start.sh"] diff --git a/backend/app/database.py b/backend/app/database.py index 4c15b62..79cf396 100644 --- a/backend/app/database.py +++ b/backend/app/database.py @@ -2,7 +2,15 @@ import os from sqlmodel import Session, SQLModel, create_engine # type: ignore -DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./notes.db") +# Get database URL from environment, with proper fallback +DATABASE_URL = os.getenv("DATABASE_URL") + +# If DATABASE_URL is not set or empty, use default SQLite +if not DATABASE_URL or DATABASE_URL.strip() == "": + DATABASE_URL = "sqlite:////app/data/notes.db" + print(f"WARNING: DATABASE_URL not set, using default: {DATABASE_URL}") +else: + print(f"Using DATABASE_URL: {DATABASE_URL}") # Only use check_same_thread for SQLite connect_args = {"check_same_thread": False} if DATABASE_URL.startswith("sqlite") else {} diff --git a/backend/start.sh b/backend/start.sh new file mode 100644 index 0000000..e7867c8 --- /dev/null +++ b/backend/start.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +echo "=========================================" +echo "Starting FastNotes API..." +echo "=========================================" +echo "DATABASE_URL: ${DATABASE_URL:-'not set'}" +echo "CORS_ORIGINS: ${CORS_ORIGINS:-'not set'}" +echo "SECRET_KEY: ${SECRET_KEY:+'***set***'}" +echo "Working directory: $(pwd)" +echo "Contents of /app:" +ls -la /app +echo "=========================================" + +# Create data directory if it doesn't exist +mkdir -p /app/data +echo "Created/verified /app/data directory" + +# Start uvicorn +echo "Starting uvicorn..." +exec uvicorn app.main:app --host 0.0.0.0 --port 8000 --proxy-headers --forwarded-allow-ips "*" diff --git a/compose.yaml b/compose.yaml index e96eb79..0ec5d49 100644 --- a/compose.yaml +++ b/compose.yaml @@ -4,7 +4,7 @@ services: context: ./backend container_name: fastnotes-api environment: - - DATABASE_URL=${DATABASE_URL:-sqlite:///./data/notes.db} + - DATABASE_URL=${DATABASE_URL:-sqlite:////app/data/notes.db} - SECRET_KEY=${SECRET_KEY:-change-this-in-production} - CORS_ORIGINS=${CORS_ORIGINS:-*} # Internal only - accessed via nginx proxy @@ -36,8 +36,7 @@ services: ports: - "80:80" depends_on: - api: - condition: service_healthy + - api restart: unless-stopped volumes: