Dockerfile

Un Dockerfile est la recette d'une image : une image de base, puis des instructions qui copient des fichiers, lancent des commandes et disent comment le conteneur démarre. docker build en fait une image, avec une couche pour chaque instruction qui modifie des fichiers.

Comment ça marche

FROM choisit la base, WORKDIR fixe le dossier, COPY apporte des fichiers depuis le contexte de build, RUN exécute une commande pendant le build, ENV et EXPOSE décrivent la configuration, USER fixe qui exécute le programme, et CMD ou ENTRYPOINT fixent ce qui s'exécute. Les instructions s'appliquent dans l'ordre, de haut en bas.

Ce qui casse

RUN s'exécute au build, CMD au démarrage du conteneur : RUN node server.js bloque le build, puisque le serveur ne se termine jamais. Chaque RUN démarre aussi un nouveau shell, donc RUN cd /app n'a aucun effet sur la ligne suivante ; utilise WORKDIR.

Dans un Dockerfile

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "src/server.js"]

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.