diff --git a/images/prefect-worker-pg-backup/Dockerfile b/images/prefect-worker-pg-backup/Dockerfile new file mode 100644 index 0000000..ec2788c --- /dev/null +++ b/images/prefect-worker-pg-backup/Dockerfile @@ -0,0 +1,31 @@ +# ============================================================================= +# Prefect Worker - PostgreSQL Backup +# +# Image Docker pour un worker Prefect dédié aux sauvegardes PostgreSQL +# Inclut les outils nécessaires pour dump PG et upload vers S3 (Garage) +# ============================================================================= + +FROM prefecthq/prefect:3-python3.12 + +LABEL maintainer="Damien Arnodo" +LABEL org.opencontainers.image.title="Prefect Worker - PostgreSQL Backup" +LABEL org.opencontainers.image.description="Prefect worker with PostgreSQL and S3 tools for database backups" + +# Installation des outils PostgreSQL (pg_dump, pg_restore, etc.) +RUN apt-get update && apt-get install -y --no-install-recommends \ + postgresql-client \ + && rm -rf /var/lib/apt/lists/* + +# Installation des dépendances Python pour S3 et PostgreSQL +RUN pip install --no-cache-dir \ + boto3 \ + psycopg2-binary + +# Création d'un utilisateur non-root +RUN useradd -m -u 1000 prefect +USER prefect + +WORKDIR /app + +# Le worker sera démarré via la commande dans docker-compose +# CMD ["prefect", "worker", "start", "--pool", "my-pool"] diff --git a/images/prefect-worker-pg-backup/README.md b/images/prefect-worker-pg-backup/README.md new file mode 100644 index 0000000..091857a --- /dev/null +++ b/images/prefect-worker-pg-backup/README.md @@ -0,0 +1,38 @@ +# Prefect Worker - PostgreSQL Backup + +Image Docker pour un worker Prefect dédié aux sauvegardes de bases de données PostgreSQL vers un stockage S3-compatible (Garage). + +## Contenu + +- **Base** : `prefecthq/prefect:3-python3.12` +- **Outils PostgreSQL** : `pg_dump`, `pg_restore`, `psql` +- **Python** : `boto3`, `psycopg2-binary` + +## Utilisation + +### Dans docker-compose + +```yaml +prefect-worker: + image: gitea.arnodo.fr/damien/prefect-worker-pg-backup:latest + environment: + - PREFECT_API_URL=http://prefect-server:4200/api + command: prefect worker start --pool pg-backup-pool --type process + depends_on: + - prefect-server +``` + +### Variables d'environnement requises pour les flows + +| Variable | Description | +|----------|-------------| +| `PREFECT_API_URL` | URL de l'API Prefect | +| `AWS_ACCESS_KEY_ID` | Clé d'accès S3 (Garage) | +| `AWS_SECRET_ACCESS_KEY` | Secret S3 (Garage) | +| `AWS_ENDPOINT_URL` | Endpoint S3 (ex: `https://s3.garage.example.com`) | + +## Build local + +```bash +docker build -t prefect-worker-pg-backup:latest images/prefect-worker-pg-backup/ +```