feat: dockerize app and convert to pyproject setup

- Add pyproject.toml with proper metadata and dependency groups
- Create multi-stage Dockerfile for backend
- Add docker-compose.yml with dev/prod profiles
- Create frontend Dockerfile with nginx
- Add .dockerignore for optimized builds
- Update README with Docker instructions and troubleshooting
- Remove requirements.txt in favor of pyproject.toml
- Ensure data persistence with Docker volumes
This commit is contained in:
2026-05-11 22:50:11 +02:00
parent abeb64637e
commit cc694e71b4
15 changed files with 632 additions and 21 deletions
@@ -0,0 +1,29 @@
## Why
The current backup tool uses a simple `requirements.txt` for dependency management and lacks containerization. This makes deployment inconsistent across environments and complicates dependency resolution. Converting to a proper `pyproject.toml` setup and adding Docker support will provide reproducible builds, standardized packaging, and one-command deployment for users.
## What Changes
- **Convert backend to pyproject.toml**: Replace `requirements.txt` with a modern `pyproject.toml` including project metadata, dependencies, build system, and optional dev/test dependencies
- **Add Dockerfile**: Multi-stage Docker build for the Python backend with proper layer caching
- **Add docker-compose.yml**: Orchestrate backend + frontend services with volume mounts and environment configuration
- **Add .dockerignore**: Optimize build context and exclude unnecessary files
- **Update README**: Add Docker deployment instructions
- **Frontend containerization (optional)**: Dockerfile for production frontend build served via nginx or integrated into backend static serving
## Capabilities
### New Capabilities
- `docker-deployment`: Container-based deployment with Docker and docker-compose for consistent environments
- `python-packaging`: Modern Python packaging with pyproject.toml, proper dependency groups, and build tooling
### Modified Capabilities
- None (this is a build/deployment improvement, no spec-level behavior changes)
## Impact
- **Build system**: Replaces `requirements.txt` with `pyproject.toml` (standard modern Python practice)
- **Deployment**: New Docker-based deployment path alongside existing manual setup
- **CI/CD**: Enables standardized container builds for CI pipelines
- **Developer experience**: `docker compose up` to start full stack instead of manual venv + npm setup
- **No API changes**: All existing endpoints and functionality remain unchanged