loading...

Comprendre Dockerfile #FR

simerca profile image Ayrton ・2 min read

Bonjour les apprentis dockeriste !
Si vous êtes la c'est que comme moi à un certain moment, vous avez décider d'en savoir plus sur ce fichier Dockerfile qui parait simple à la lecture mais pourtant... pas tant que cela.

Commençons avec la question bateau.

Qu'est-ce que le Dockerfile ?

C'est un petit bout de fichier de configuration qui vient donner à docker ce dont vous avez envie.

Par exemple;

Vous avez une super application en Node JS, vous souhaitez donc la mettre en production sur votre serveur qui accueille des containers dockers. Vous avez besoin de plusieurs chose :

  • Lancer une archi Linux,
  • Installer les dépendance npm de votre projet.
  • Lancer le build et exposer l'exécution du script sur le port 80

Dans ce cas le Dockerfile s'exécutera comme cela :

FROM debian:9
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_10.x | bash \
&& apt-get install nodejs -yq \
&& apt-get clean -y

WORKDIR /app
COPY app/package*.json ./
RUN npm install
COPY app .

RUN npm run build

EXPOSE 80

CMD npm run start

Lisons un peu ce bout de code

  • On utilise l'image de Debian 9
  • On execute la mise à jour des paquets et l'installation de node
  • On définie le repertoire de travail dans son dossier app
  • On lance l'installation des dépendances
  • On build
  • On expose sur le port 80
  • Et on lance notre application

ensuite on ajoute un fichier .dockerignore, il fonctionne comme un .gitignore, c'est à dire que l'on va ignorer certain fichier / dossier de notre projet
exemple :

.git
app/node_modules

ensuite,
je vous conseil une architecture de vos projets comme ceci

root:
  Dockerfile
  app/
    node_modules
    src
    packages.json
    etc

merci Xavier

allez-y tester avec la commande suivante :

docker build -t nomdevotreimage .

youhouuu ! vous avez build votre premier Dockerfile félicitations !

Pour les feignasses
https://gitlab.com/Simerca/dockerfile-exemple

Discussion

pic
Editor guide