J'ai demandé à Claude

J'ai récemment recréé feeds.duhaz.fr avec Lovable, une plateforme de développement assistée par IA. Lovable m'a permis de refondre complètement mon agrégateur de flux RSS en un temps record, avec une interface moderne et des fonctionnalités améliorées.

Mais voilà, une fois l'application créée avec Lovable, il fallait la déployer sur mon serveur. C'est là que Claude entre en jeu pour la partie DevOps !

Le besoin initial

Mon objectif était simple : créer une stack Docker qui :

- Contienne Node.js et Git
- Écoute sur le port 9876
- Se synchronise automatiquement avec mon repository GitHub
- Utilise un volume permanent pour persister les données

La discussion

J'ai commencé par une question basique : "Je cherche une image Docker avec Node.js et Git d'installé". Claude m'a tout de suite proposé plusieurs options, avec l'image officielle Node.js qui contient déjà Git.

Ensuite, je lui ai demandé de créer un Dockerfile complet avec un volume permanent et l'écoute sur le port 9876. Jusqu'ici, classique.

Puis est venue la vraie complexité : je voulais que le conteneur se synchronise automatiquement avec mon repository GitHub au démarrage. Claude a alors créé un script entrypoint.sh qui :

- Clone le repository au premier démarrage
- Fait un git pull aux démarrages suivants
-Installe les dépendances npm
- Lance l'application

Le problème Portainer

C'est là que ça s'est compliqué. Quand j'ai essayé de déployer via Portainer (mon interface de gestion Docker), j'ai eu l'erreur : "No such image: nodejs-app:latest".

Le problème ? Portainer ne peut pas construire d'images à la volée. Il a besoin d'images déjà construites ou disponibles sur Docker Hub.

Claude a alors adapté la solution : plutôt que d'utiliser un Dockerfile custom, on utilise directement l'image officielle node:20 et on exécute tous les scripts nécessaires au démarrage via la directive command.

La solution finale

Voici le docker-compose.yml final qui fonctionne parfaitement avec Portainer :

version: '3.8'
services:
  nodejs-app:
    image: node:20-alpine
    command: >
      sh -c "
      apk add --no-cache git &&
      cd /app &&
      if [ ! -d .git ]; then
        echo 'Clonage du repository...' &&
        git clone https://github.com/laurentdu51/feeds-duhaz-fr-v3 .
      else
        echo 'Mise à jour du repository...' &&
        git pull origin main || git pull origin master
      fi &&
      echo 'Nettoyage...' &&
      rm -rf node_modules package-lock.json &&
      echo 'Installation des dépendances...' &&
      npm install &&
      echo 'Liste des dépendances installées:' &&
      ls -la node_modules/.bin/ &&
      echo 'Démarrage de l application avec npx...' &&
      npx vite --host 0.0.0.0 --port 9876
      "
    ports:
      - "9876:9876"
    volumes:
      - app_data:/app
    environment:
      - NODE_ENV=development
    restart: unless-stopped
    working_dir: /app
volumes:
  app_data: {}

Ce que j'ai appris

L'image Node.js officielle contient déjà Git - pas besoin de chercher une image custom

Portainer ne construit pas les images - il faut soit construire manuellement, soit utiliser des images publiques

On peut tout faire avec la directive command - c'est moins élégant qu'un Dockerfile custom, mais ça fonctionne parfaitement pour Portainer

Claude s'adapte en temps réel - À chaque erreur, Claude a su rebondir et adapter la solution

Le résultat

Maintenant, je peux déployer mon application directement depuis Portainer en quelques clics. À chaque redémarrage du conteneur, le code se synchronise automatiquement avec GitHub. Exactement ce que je voulais.

Ce qui m'aurait pris plusieurs heures de recherche et de tests m'a pris 15 minutes de discussion avec Claude. L'IA ne remplace pas la compréhension technique, mais elle accélère considérablement le processus de résolution de problèmes.

De Lovable à la production

Cette expérience illustre parfaitement le nouveau workflow de développement avec l'IA :

Lovable pour créer rapidement l'application avec une interface moderne

Claude pour gérer le déploiement et l'infrastructure

GitHub pour la synchronisation et le versioning

Portainer pour la gestion en production

Le tout en quelques heures au lieu de plusieurs jours. feeds.duhaz.fr v4 est maintenant en ligne, avec un pipeline de déploiement automatisé. La boucle est bouclée !

Indroduction

Aujourd'hui, j'avais besoin de déployer une application Node.js avec Docker sur mon serveur. Plutôt que de passer des heures à chercher sur Stack Overflow et à compiler des morceaux de documentation, j'ai décidé de demander directement à Claude de m'aider.

Aujourd'hui, j'avais besoin de déployer une application Node.js avec Docker sur mon serveur. Plutôt que de passer des heures à chercher sur Stack Overflow et à compiler des morceaux de documentation, j'ai décidé de demander directement à Claude de m'aider.

Cet article a été rédigé en collaboration avec Claude, qui a non seulement créé la solution technique, mais a aussi aidé à structurer cet article.

Nombre de Lectures : 41
Date de mise en ligne : 10 oct. 2025 à 19:30

Les Catégories

Serveur Docker Code IA

Une Pub