Bonjour à tous ! 👋

Nous allons aborder ici un petit workflow pour utiliser Gatsby avec Docker & Docker-compose.

Je ne vais pas vous expliquer ici en détails ce qu'est Docker, et Docker-compose. Si vous souhaitez en savoir plus, je vous conseille ce lien.

Explication

Pour ce workflow, nous allons créer 3 fichiers nécessaire à l'utilisation de docker.

  • Dockerfile.dev : Liste des instructions servant à créer l'image Docker finale qui sera utilisé lors pour le développement.
  • docker-compose.dev.yml : Vous permettra de lancer facilement votre image Docker.
  • entrypoint.sh : Script du point d'entrée de l'image Docker.

Création des fichiers

Dockerfile.dev

FROM node:16.1.1-alpine3.12LABEL maintainer="Your NAME <your@name.com>"ARG APP_ROOT=/appARG APP_PORT=8000ARG BUILD_PACKAGES="build-base python3 bash make g++"RUN apk add --update --no-cache $BUILD_PACKAGESRUN mkdir -p $APP_ROOTWORKDIR $APP_ROOTCOPY package*.json ./RUN npm install && npm install -g gatsby-cliCOPY . .EXPOSE $APP_PORTENTRYPOINT ["/app/entrypoint.sh"]CMD ["npm", "run", "docker:start"]

docker-compose.dev.yml

version: "3.7"services:  gatsby:    build:      context: .      dockerfile: Dockerfile.dev    ports:      - 8000:8000    volumes:      - .:/app      - /app/node_modules/

entrypoint.sh

#!/bin/shset -enpm installexec "$@"

Optionnel: Ajout d'un "script" NPM/Yarn

Cette partie n'est pas obligatoire, mais lorsque j'utilise docker, j'aime ajouter une tâche spécifique au lancement en mode "container".

Pour cela, nous ajouter une entrée dans la partie "script" du fichier package.json

{  ...  "scripts": {    "develop": "gatsby develop",    "start": "npm run develop",    "docker:start": "gatsby develop -H 0.0.0.0",    "build": "gatsby build --prefix-paths",    "serve": "gatsby serve"  },  ...

Toutefois, si vous décider de ne pas faire cette étape, veuillez changer la dernière ligne du Dockerfile.dev par CMD ["npm", "run", "gatsby develop -H 0.0.0.0" ]

Utilisation

Pour utiliser votre image, vous aller pouvoir utiliser cette commande :

  docker-compose -f docker-compose.dev.yml up

Cette commande, si vous l'executer pour la première fois, va créer (build) l'image à partir du Dockefile.dev que nous avons créé plus haut, puis lancer un container créé à partie de l'image.