proofmode 0.9.0

Capture, share, and preserve verifiable photos and videos
Documentation
# ProofMode Docker Support

ProofMode provides comprehensive Docker support for easy deployment and usage across different platforms.

## Features

- **Multi-architecture support**: Pre-built images for amd64 and arm64
- **Optimized image size**: Multi-stage builds with minimal runtime dependencies
- **Security**: Runs as non-root user with minimal permissions
- **Flexibility**: Configurable via environment variables
- **Health checks**: Built-in health monitoring
- **Docker Compose**: Easy orchestration with optional services

## Quick Start

```bash
# Using the quick-start script
cd docker
./quick-start.sh

# Or manually with Docker
docker pull registry.gitlab.com/guardianproject/proofmode/proofmode-rust:latest
docker run -v $(pwd):/app/input registry.gitlab.com/guardianproject/proofmode/proofmode-rust check /app/input/photo.jpg
```

## Image Details

- **Base**: Debian Bookworm Slim
- **Size**: ~50MB (compressed)
- **User**: runs as uid 1000 (proofmode)
- **Volumes**: `/app/input`, `/app/output`, `/app/config`

## Available Tags

- `latest` - Latest stable release
- `main` - Latest from main branch
- `develop` - Latest development version
- Version tags (e.g., `v0.8.4`)

## Building from Source

```bash
# Build for current architecture
make docker-build

# Build multi-architecture image
make docker-buildx

# Test the image
make docker-test
```

## Environment Variables

| Variable | Description | Default |
|----------|-------------|---------|
| `RUST_LOG` | Logging level | `info` |
| `PROOFMODE_INPUT_DIR` | Input directory | `/app/input` |
| `PROOFMODE_OUTPUT_DIR` | Output directory | `/app/output` |
| `PROOFMODE_CONFIG_DIR` | Config directory | `/app/config` |

## Docker Compose

The project includes a comprehensive `docker-compose.yml` with optional services:

```bash
# Start core service
docker-compose up -d

# With IPFS support
docker-compose --profile with-ipfs up -d

# With PostgreSQL database
docker-compose --profile with-database up -d
```

## CI/CD

GitLab CI automatically builds and publishes Docker images on:
- Push to main branch
- New version tags (v*)

Images are published to:
- GitLab Container Registry: `registry.gitlab.com/guardianproject/proofmode/proofmode-rust`

## Security Considerations

- Container runs as non-root user (uid 1000)
- Read-only root filesystem with specific writable volumes
- No new privileges flag enabled
- Minimal attack surface with only required dependencies
- Regular security scanning with Trivy

For more detailed usage examples, see the [Docker README](docker/README.md).