diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..34eefe6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +__pycache__/ +*.py[cod] +*$py.class +.pytest_cache/ +venv/ +.git/ +.env +data/ +*.db +*.db-wal +*.db-shm diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5d03e25 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM python:3.12-slim + +WORKDIR /app + +# Install dependencies +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Copy application source +COPY . . + +# Ensure data directory exists for SQLite WAL storage +RUN mkdir -p /app/data + +ENV HOST=0.0.0.0 \ + PORT=8002 \ + PYTHONUNBUFFERED=1 + +EXPOSE 8002 + +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8002"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2d17278 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +services: + study-web: + build: . + container_name: study-qpid-pro + restart: unless-stopped + ports: + - "127.0.0.1:8002:8002" + volumes: + - ./data:/app/data + environment: + - HOST=0.0.0.0 + - PORT=8002 + - DEBUG=False + - SECRET_KEY=study-qpid-pro-secret-key-change-in-prod + - ADMIN_USERNAME=admin + - ADMIN_PASSWORD=adminpass + - DB_PATH=/app/data/notes.db