Add sh + dockerfile

This commit is contained in:
Charlyne Wargnier-Potier 2025-04-28 21:56:09 +00:00
parent 407791b14a
commit b9e376350e
3 changed files with 112 additions and 0 deletions

20
sk1/Dockerfile Normal file
View File

@ -0,0 +1,20 @@
FROM python:3.9-slim
# Set the working directory to /app
WORKDIR /app
# Copy requirements.txt from the app folder
COPY ./app/requirements.txt .
# Install dependencies
RUN pip install -r requirements.txt
# Copy the entire app folder into the container
COPY ./app /app
# Expose port 5000
EXPOSE 5000
# Run the app
CMD ["python", "app.py"]

78
sk1/deploy.sh Normal file
View File

@ -0,0 +1,78 @@
#!/bin/bash
# Variables
RESOURCE_GROUP="travel-planner"
AKS_CLUSTER="travelplanneraks"
ACR_NAME="travelplannerregistry" # Nom en minuscules sans tirets
NAMESPACE="travel-planner"
IMAGE_NAME="travel-planner"
IMAGE_TAG="latest"
LOCATION="eastus"
echo "==== Déploiement Azure - Création des ressources ===="
az login
# Étape 1: Créer le groupe de ressources s'il n'existe pas
echo "Création du groupe de ressources..."
az group create --name $RESOURCE_GROUP --location $LOCATION || exit 1
# Étape 2: Créer le registre de conteneurs Azure (ACR)
echo "Création du registre de conteneurs Azure..."
az acr create --resource-group $RESOURCE_GROUP --name $ACR_NAME --sku Basic || exit 1
# Étape 3: Créer le cluster AKS
echo "Création du cluster AKS (cela peut prendre plusieurs minutes)..."
az aks create \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER \
--node-count 1 \
--enable-addons monitoring \
--generate-ssh-keys \
--attach-acr $ACR_NAME
# Étape 4: Connexion au cluster AKS
echo "Connexion au cluster AKS..."
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER || exit 1
# Étape 5: Créer le namespace Kubernetes
echo "Création du namespace Kubernetes..."
kubectl create namespace $NAMESPACE || true
# Étape 6: Construire et pousser l'image Docker vers ACR
echo "Construction et publication de l'image Docker..."
# Se connecter à l'ACR
az acr login --name $ACR_NAME
# Taguer l'image avec le nom de l'ACR
docker pull chabooo/travel-planner:latest
docker tag chabooo/travel-planner:latest ${ACR_NAME}.azurecr.io/${IMAGE_NAME}
docker push ${ACR_NAME}.azurecr.io/${IMAGE_NAME}
# Étape 7: Mise à jour du fichier deployment.yaml pour utiliser l'image de l'ACR
echo "Mise à jour du fichier deployment.yaml..."
sed -i "s|image:.*|image: ${ACR_NAME}.azurecr.io/${IMAGE_NAME}|" k8s/deployment.yaml
# Étape 8: Appliquer les ressources Kubernetes
echo "Déploiement des ressources Kubernetes..."
kubectl apply -f k8s/namespace.yaml -n $NAMESPACE
kubectl apply -f k8s/secret.yaml -n $NAMESPACE
kubectl apply -f k8s/persistent-volume.yaml -n $NAMESPACE
kubectl apply -f k8s/persistent-volume-claim.yaml -n $NAMESPACE
kubectl apply -f k8s/postgres-service.yaml -n $NAMESPACE
kubectl apply -f k8s/statefulset.yaml -n $NAMESPACE
kubectl apply -f k8s/deployment.yaml -n $NAMESPACE
kubectl apply -f k8s/service.yaml -n $NAMESPACE
# Étape 9: Attendre que les pods soient prêts
echo "Attente du déploiement des pods..."
kubectl wait --namespace $NAMESPACE --for=condition=ready pod -l app=postgres --timeout=300s
kubectl wait --namespace $NAMESPACE --for=condition=ready pod -l app=travel-planner --timeout=300s
# Étape 10: Afficher l'URL d'accès
echo "Application déployée. URL d'accès:"
kubectl get svc travel-planner -n $NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
echo ""
echo "==== Déploiement Azure terminé ===="

14
sk1/prepare-app.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
echo "Preparing app"
# build image Docker
docker build -t chabooo/travel-planner:latest .
echo "Sucessfuly built"
# push docker image
docker push chabooo/travel-planner:latest
echo "sucessfuly pushed"
echo "Preparation completed."