Leçon 10 : Copie du code et définition du répertoire de travail
Pour construire une image pour une application réelle, nous devons copier notre code dans le système de fichiers de l'image et définir où notre application doit s'exécuter.
1. WORKDIR (Répertoire de Travail)
L'instruction WORKDIR définit le répertoire de travail actuel pour les instructions suivantes (RUN, CMD, ENTRYPOINT, COPY). Si le répertoire n'existe pas, Docker le créera.
dockerfile
Bonne pratique : Créer un répertoire dédié pour l'application
WORKDIR /app
Les commandes RUN subséquentes s'exécuteront maintenant à l'intérieur de /app
RUN pwd
Résultat : /app
2. COPY (Copie de Fichiers)
L'instruction COPY copie des fichiers ou des répertoires du contexte de construction (votre machine locale) dans le système de fichiers de l'image.
Syntaxe : COPY <source> <destination>
Exemple : Conteneurisation d'une Application Node.js
Supposons que vous ayez un package.json et un fichier serveur (server.js).
dockerfile FROM node:20-alpine
1. Définir le répertoire de travail
WORKDIR /usr/src/app
2. Copier d'abord les fichiers de dépendance (pour l'optimisation du cache des couches !)
Nous copions package*.json séparément, de sorte que si seul le code change,
l'étape coûteuse 'npm install' reste en cache.
COPY package*.json ./
3. Installer les dépendances
RUN npm install
4. Copier le reste du code de l'application
COPY . .
5. Définir le point d'entrée de l'application
CMD ["node", "server.js"]
Différence entre COPY et ADD :
- On préfère généralement
COPYcar il est plus simple et plus clair. ADDa des fonctionnalités supplémentaires : il peut gérer les URL distantes et extraire automatiquement les archives compressées (tar, gzip). UtilisezCOPYsauf si vous avez explicitement besoin de la fonction d'extraction d'archive.