Lancer des tâches Gulp dans un conteneur docker NodeJS

Posté le Mardi 19 novembre 2019 - 14:27
Dernière mise à jour le Mercredi 20 novembre 2019 - 12:41

Je ne m'occupe pas du développement front, mais il m'arrive d'avoir à réaliser une modification rapide de CSS ou JS sur un projet qui peut avoir parfois quelques années, (une éternité dans l'écosystème javascript). Et la version de nodejs la plus récente n'est parfois plus compatible avec le projet ou d'autres joyeusetés.

Depuis la dernière réinstallation de mon système, plus de nodejs sur ma machine, je ne passe plus que part des conteneurs docker exécuter les taches gulp, avec chaque fois la version de nodejs qui va bien.

Tout commence avec la définition de mon image via un Dockerfile :

FROM node:9-alpine

RUN apk add --update \
    python \
    python-dev \
    py-pip \
    build-base \
    git \
    openssh-client \
  && pip install virtualenv \
  && rm -rf /var/cache/apk/*

RUN apk --no-cache add pkgconfig autoconf automake libtool nasm build-base zlib-dev

RUN npm install -g gulp

WORKDIR /app
RUN npm set progress=false

La première ligne est à modifier en fonction de la version de nodejs que vous souhaitez, la liste de toutes les version disponible est ici : https://hub.docker.com/_/node

ainsi si on voulait la version 13 de nodejs, la ligne 1 serait alors : FROM node:13-alpine

Deuxième étape ajouter l'image au docker-compose.yml :

  node:
    build: docker/docker-node
    volumes:
      - ./:/app
    tty: true

Dans mon exemple, le dockerfile est situé dans le dossier docker/docker-node.

Construction de l'image et lancement des services

# construction de l'image
docker-compose build

# Lancement des conteneurs 
docker-compose up -d

Pour ensuite jouer avec node et gulp :

# Installation des dépendances node
docker-compose exec node npm install 

# lancement de la tâche « build »
docker-compose exec node gulp build

Et voila, plus besoin de nodejs sur la machine ou de jongler entre les différentes versions.

Aller plus loin ?

Ajouter un commentaire

Ne sera pas publié

CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...