Exercices de code
Choisissez un exercice, codez dans l’éditeur et validez votre solution.
Vue : compteur avec ref
Utiliser ref() et un bouton pour incrémenter un compteur.
DébutantVueNext.js : ajouter un sous-titre (App Router)
Enrichir la page d’accueil dans `app/page.jsx`.
DébutantNext.jsReact : premier useState
Utiliser le hook useState pour afficher un compteur.
DébutantReactReact : liste avec map
Afficher une liste d’éléments avec .map().
DébutantReactHTML/CSS : titre et couleur
Modifier le titre et ajouter une couleur en CSS.
DébutantHTMLJavaScript : valider un e-mail (regex)
Écrire une regex simple dans `utils.js` pour `isEmail`.
IntermédiaireReactHTML : zone principale `<main>`
Entourer le contenu dans un landmark accessible.
DébutantHTMLNext.js : lien avec next/link
Utiliser le composant Link pour la navigation interne.
DébutantNext.jsBash : terminal simulé (ls, cd, pwd…)
Découvrir un interpréteur Bash dynamique dans le navigateur — commandes classiques sur un système de fichiers virtuel.
DébutantBashDocker : image de base Alpine
Utiliser une image Alpine légère comme base.
DébutantDockerDocker : exposer le port 8080
Documenter le port d'écoute avec EXPOSE.
DébutantDockerDocker : WORKDIR personnalisé
Définir le répertoire de travail /srv.
DébutantDockerDocker : variable ENV
Déclarer NODE_ENV=production dans le Dockerfile.
DébutantDockerDocker : commande CMD
Lancer l'app avec node index.js.
DébutantDockerDocker : RUN npm ci
Installer les dépendances avec npm ci.
DébutantDockerDocker : utilisateur non-root
Exécuter le conteneur avec USER node.
IntermédiaireDockerDocker : HEALTHCHECK
Ajouter une sonde de santé HTTP.
IntermédiaireDockerDocker : build multi-étapes
Séparer build et runtime avec AS builder.
IntermédiaireDockerDocker : LABEL maintainer
Documenter l'auteur de l'image.
DébutantDockerDocker : ARG de build
Paramétrer la version Node avec ARG.
IntermédiaireDockerDocker : ENTRYPOINT
Fixer le point d'entrée du conteneur.
IntermédiaireDockerDocker Compose : mapper le port 8080
Publier le port 8080 sur l'hôte.
DébutantDockerDocker Compose : volume nommé
Monter un volume pour persister les données.
IntermédiaireDockerDocker Compose : fichier .env
Charger les variables depuis env_file.
IntermédiaireDockerDocker Compose : depends_on
Ordre de démarrage entre services.
IntermédiaireDockerDocker Compose : réseau custom
Isoler les services sur un réseau dédié.
IntermédiaireDockerDocker Compose : politique restart
Redémarrer automatiquement le conteneur.
DébutantDockerDocker Compose : service Redis
Ajouter un cache Redis au stack.
IntermédiaireDockerDocker : .dockerignore
Exclure les secrets du contexte de build.
DébutantDockerDocker : COPY package.json en premier
Optimiser le cache Docker layers.
IntermédiaireDockerDocker : STOPSIGNAL
Gérer l'arrêt gracieux du conteneur.
AvancéDockerDocker Compose : healthcheck
Sonde de santé au niveau Compose.
IntermédiaireDockerDocker Compose : profiles
Activer des services à la demande.
AvancéDockerDocker Compose : build args
Passer des ARG au build Docker.
AvancéDockerKubernetes : 3 réplicas
Scaler le Deployment à 3 pods.
DébutantKubernetesKubernetes : image nginx
Déployer nginx:1.25 au lieu de app:latest.
DébutantKubernetesKubernetes : containerPort 80
Exposer le port 80 du conteneur.
DébutantKubernetesKubernetes : label version
Ajouter un label version au pod template.
DébutantKubernetesKubernetes : limits CPU/mémoire
Définir des resource limits.
IntermédiaireKubernetesKubernetes : livenessProbe
Détecter les conteneurs bloqués.
IntermédiaireKubernetesKubernetes : readinessProbe
Contrôler le trafic entrant.
IntermédiaireKubernetesKubernetes : Service ClusterIP
Service interne au cluster.
DébutantKubernetesKubernetes : port Service 8080
Exposer le port 8080.
DébutantKubernetesKubernetes : namespace dev
Déployer dans le namespace dev.
DébutantKubernetesKubernetes : ConfigMap
Créer un ConfigMap pour la config app.
IntermédiaireKubernetesKubernetes : secretKeyRef
Injecter un secret en variable d'env.
IntermédiaireKubernetesKubernetes : configMapKeyRef
Lire une clé depuis un ConfigMap.
IntermédiaireKubernetesKubernetes : Ingress
Exposer l'app via un nom de domaine.
IntermédiaireKubernetesKubernetes : HorizontalPodAutoscaler
Auto-scaling sur CPU.
AvancéKubernetesKubernetes : PersistentVolumeClaim
Demander du stockage persistant.
IntermédiaireKubernetesKubernetes : RollingUpdate
Stratégie de déploiement sans coupure.
IntermédiaireKubernetesKubernetes : nodeSelector
Planifier sur des nœuds spécifiques.
AvancéKubernetesKubernetes : tolerations
Tolérer un taint de nœud.
AvancéKubernetesKubernetes : Service NodePort
Exposer le service sur chaque nœud.
IntermédiaireKubernetesKubernetes : requests CPU
Réserver des ressources au conteneur.
IntermédiaireKubernetesKubernetes : imagePullPolicy
Contrôler le pull d'image.
DébutantKubernetesKubernetes : serviceAccountName
Associer un compte de service au pod.
AvancéKubernetesKubernetes : podAntiAffinity
Répartir les pods sur plusieurs nœuds.
AvancéKubernetesKubernetes : initContainer
Exécuter une tâche avant le conteneur principal.
AvancéKubernetes