Bienvenue dans ce projet d'apprentissage autour de Docker, PostgreSQL, pgAdmin, SQL et Terraform sur Google Cloud Platform (GCP). L’objectif est de manipuler un environnement conteneurisé, charger des données réelles de taxi à New York, les analyser à l’aide de requêtes SQL, puis automatiser le déploiement de l'infrastructure dans le cloud.
- 1. Exécution de base avec Docker
- 2. Configuration PostgreSQL + pgAdmin avec Docker Compose
- 3. Importation des données de trajets
- 4. Analyse SQL des données
- 5. Déploiement avec Terraform sur GCP
- 6. Configuration IAM pour le compte Terraform
- 7. Arborescence du projet
- 8. Fichier .gitignore
docker run -it python:3.12.8 bash- -it : terminal interactif
- python:3.12.8 : image officielle Python
- bash : ouvre un shell dans le conteneur
- Image :
postgres:17-alpine - Ports :
5433:5432
- Interface : http://localhost:8080
- Email :
pgadmin@pgadmin.com - Mot de passe :
pgadmin
wget https://github.com/DataTalksClub/nyc-tlc-data/releases/download/green/green_tripdata_2019-10.csv.gz
wget https://github.com/DataTalksClub/nyc-tlc-data/releases/download/misc/taxi_zone_lookup.csv
gunzip green_tripdata_2019-10.csv.gzChargement des données via pandas dans un notebook Python.
Exemples :
- Nombre de trajets par tranche de distance
- Trajet le plus long par jour
- Zones de ramassage principales
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraformAvant d'exécuter Terraform, exporte ta clé d'identification :
export GOOGLE_APPLICATION_CREDENTIALS="./keys/my-creds.json"Cela permet à Terraform de s'authentifier auprès de Google Cloud.
- Bucket GCS : stockage des CSV
- Dataset BigQuery :
demo_dataset - Tables BigQuery :
green_tripdata_2019,taxi_zone_lookup - VM Ubuntu : déployée dans
northamerica-northeast1-a
cd terraform
terraform init
terraform plan
terraform applyCompte de service :
terraform-runner@terraform-project-461319.iam.gserviceaccount.com
Rôles requis dans GCP :
| Rôle | ID du rôle |
|---|---|
| Administrateur BigQuery | roles/bigquery.admin |
| Administrateur de Compute | roles/compute.admin |
| Administrateur Storage | roles/storage.admin |
| Utilisateur de compte de service | roles/iam.serviceAccountUser |
Fullstack-Data-Engineering-Project-using-Docker-PostgreSQL-Terraform/
├── data/
│ └── green_tripdata_2019-10.csv
│ └── taxi_zone_lookup.csv
├── terraform/
│ ├── keys/
│ │ └── my-creds.json
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ ├── .gitignore
├── docker-compose.yaml
├── notebooks/
│ └── data-load.ipynb
└── README.mdFichier .gitignore à placer dans le dossier terraform/ :
# Terraform
.terraform/
*.tfstate
*.tfstate.*
.terraform.tfstate.lock.info
# Variables sensibles
*.tfvars
*.tfvars.json
# Fichiers overrides locaux
override.tf
override.tf.json
*_override.tf
*_override.tf.json
# Fichiers de config CLI
.terraformrc
terraform.rc
# Clés GCP
keys/*.json
# OS et IDE
.vscode/
.idea/
*.swp
.DS_Store
Thumbs.db
⚠️ Attention : ne jamais versionner les fichiers de clés*.jsonni les fichiers.tfstatedans GitHub !