Architecture Docker :
Client (API)
Architecture Docker Daemon Containers
Images
Register (HUB)
Les commandes Docker :
Commande Signification
docker image ls / docker images Lister les images Docker sur l’hôte local
Extraire (télécharger) l'image Docker depuis
docker pull <image>
un registre (Docker hub par défaut )
docker push <image> Envoyer (pousser) une image dans un registre
docker rmi <image> Supprimer une image depuis l'hôte local
Lister les conteneurs Docker en cours
docker container ls
d’exécution sur l’hôte local
docker container ls -a Lister tous les conteneurs (actifs et arrêtés)
docker run <image> Créer et démarrer un conteneur à partir
d’une image Docker
docker stop <container>
Arrêter un conteneur Docker en cours
d’exécution
docker start <container> Démarrer un conteneur Docker arrêté
docker rm <container>
Supprimer un conteneur Docker (doit être
arrêté au préalable)
docker logs <container>
Afficher les logs (journaux) d’un
conteneur
Structure d’un fichier DockerFile
# 1. Utiliser une image officielle de [Link] optimisée (basée sur Alpine Linux, légère et rapide)
FROM node:18-alpine
# 2. Définir le répertoire de travail à l'intérieur du conteneur
# Tous les fichiers copiés ou les commandes exécutées le seront à partir de ce répertoire
WORKDIR /app
# 3. Copier les fichiers de configuration nécessaires à l’installation des dépendances
# Astuce : copier seulement [Link] et [Link] permet de mieux utiliser le cache Docker
COPY package*.json ./
# 4. Installer toutes les dépendances définies dans [Link]
# Cela installera tous les packages nécessaires pour exécuter ton microservice
RUN npm install
# 5. Copier le reste des fichiers du projet (code source, dossiers : models, controllers, etc.)
# Cette étape vient après l’installation pour ne pas re-télécharger les dépendances à chaque changement de code
COPY . .
# 6. Exposer le port sur lequel ton application [Link] écoute (à adapter si ton app utilise un autre port)
# Cela permet à Docker de rendre ce port accessible depuis l’extérieur du conteneur
EXPOSE 3000
# 7. Définir la commande à exécuter au démarrage du conteneur
# Ici, on lance l'application via le script "start" défini dans [Link]
CMD ["npm", "start"]