This commit introduces changes to ensure that Alembic database migrations
are automatically applied when the backend Docker container starts.
Key changes:
- Added `be/entrypoint.sh`: This script first runs `alembic upgrade head`
to apply any pending migrations and then executes the main container
command (e.g., starting Uvicorn).
- Modified `be/Dockerfile`:
- The `entrypoint.sh` script is copied into the image and made executable.
- The Docker `ENTRYPOINT` is set to this script, ensuring migrations
run before the application starts.
- Updated `docker-compose.yml`:
- The `DATABASE_URL` for the `backend` service has been set to the
Neon database URL you provided.
- Verified `be/alembic/env.py`: Confirmed that it correctly sources the
`DATABASE_URL` from environment variables for Alembic to use.
These changes address the issue where migrations were not being run,
preventing the application from starting correctly.
- Updated Dockerfiles to use `python:3.11-slim` for reduced image size and enhanced build efficiency.
- Implemented multi-stage builds with selective file copying and non-root user creation for better security.
- Enhanced deployment workflow with retry logic for image pushes and added cleanup steps for Docker resources.
- Improved build commands with BuildKit optimizations for both backend and frontend images.
- Updated .dockerignore to categorize ignored files, including logs and local development configurations.
- Implemented a multi-stage build in Dockerfile to optimize image size and dependency management.
- Added build dependencies and created a virtual environment for better isolation of Python packages.
- Modified the GitHub Actions workflow to streamline the deployment process by installing Docker directly and using shell commands for building and pushing images.
- Changed the base image for the backend Dockerfile from `python:3.11-slim` to `python:alpine` for a smaller footprint.
- Updated the frontend Dockerfile to use `node:23-alpine` instead of `node:24-alpine`, and refactored the production stage to use `node:slim`. Added a script for runtime environment variable injection.