e7819bfc82
- Add docker-compose.yml with postgres, redis, api, and web services - Add multi-stage Dockerfile for API (Python 3.11) - Add multi-stage Dockerfile for web (Node.js 20 + nginx) - Add Makefile with common development commands - Add .env.example with all required environment variables - Add placeholder pyproject.toml and package.json for builds - Configure health checks for all services - Setup persistent volumes for postgres, redis, and repos - Run services as non-root users
3.0 KiB
3.0 KiB
Docker Infrastructure Specification
Purpose
Provide a complete Docker-based development environment with all required services.
Requirements
Requirement: Docker Compose Setup
The system SHALL provide a docker-compose.yml with all platform services.
Scenario: Service definitions
- GIVEN the development environment
- THEN
docker-compose.ymlSHALL define:- PostgreSQL database with health checks
- Redis cache with health checks
- Traefik reverse proxy with dashboard
- Authentik authentication server
- API service (FastAPI)
- Web frontend (React/Vite)
Requirement: Multi-Stage API Dockerfile
The system SHALL build the API using a multi-stage Docker build.
Scenario: API container build
- GIVEN the API source code
- WHEN building the Docker image
- THEN
apps/api/DockerfileSHALL:- Use Python 3.11+ base image
- Install dependencies in a builder stage
- Copy only necessary files to production stage
- Run as non-root user
- Expose port 8000
Requirement: Web Frontend Dockerfile
The system SHALL build the web frontend for production deployment.
Scenario: Web container build
- GIVEN the frontend source code
- WHEN building the Docker image
- THEN
apps/web/DockerfileSHALL:- Use Node.js 20+ base image
- Install dependencies
- Build the production bundle with Vite
- Serve via nginx or similar
- Run as non-root user
Requirement: Environment Configuration
The system SHALL document all required environment variables.
Scenario: Environment setup
- GIVEN a new developer
- WHEN they set up the project
- THEN
.env.exampleSHALL document:- Database connection strings
- Redis connection strings
- Authentik configuration
- JWT secrets
- Docker volume paths
- External service URLs
Requirement: Service Health Checks
The system SHALL provide health checks for all services.
Scenario: Health verification
- GIVEN running services
- WHEN health checks are performed
- THEN each service reports healthy status
- AND unhealthy services are restarted automatically
Requirement: Makefile Commands
The system SHALL provide common operational commands.
Scenario: Developer workflow
- GIVEN the project repository
- WHEN a developer runs make commands
- THEN these commands work:
make up- Start all servicesmake down- Stop all servicesmake logs- View service logsmake migrate- Run database migrationsmake test- Run test suitesmake lint- Run linting
Requirement: Persistent Storage
The system SHALL persist git repositories across container restarts.
Scenario: Repository storage
- GIVEN the Docker setup
- THEN a dedicated volume SHALL mount at
/data/repos - AND repositories persist across container restarts
Dependencies
- Docker 24.0+
- Docker Compose 2.20+
- Make
Quality Gates
docker-compose configvalidates without errors- All services start successfully with
make up - Health checks pass for all services
pytestmust passmypy .must passruff check .must pass