Démarrage rapide de projets avec Docker
Je viens d'installer WSL2 sur mon ordinateur avec une installation Ubuntu 20.04 vierge. et je ne voulais pas installer la plupart des langages et logiciels que j'utiliserais pour mes projets.
Alors, je me suis forcé à utiliser docker run --rm
autant que possible.
Voici quelques exemples pour certains types de projets.
Installer et exécuter des projets basés sur Node/NPM
Imaginez que vous exécutez un projet basé sur Snowpack
ou Gatsby
.
docker run --rm -it -v $PWD:/usr/src/app -w /usr/src/app node:12 yarn install
docker run --rm -it -p 8000:8000 -v $PWD:/usr/src/app -w /usr/src/app node:12 yarn start
Exécuter un projet PHP
Vous pouvez même composer create
, composer install
ou php -S 0.0.0.0:80 -t public
un projet Symfony.
docker run --rm --interactive --tty --volume $PWD:/app composer create-project sylius/sylius-standard acme
docker run --rm --interactive --tty --volume $PWD:/app composer install
docker run -it --rm -p 8000:8000 -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php -S 0.0.0.0:8000 -t public
Garder la trace de vos scripts
Vous pouvez tirer parti d'un Makefile ou d'un script Shell pour valider ces scripts.
Par exemple, pour mon blog, j'utilise la configuration suivante :
.DEFAULT_GOAL := help
.SILENT: help
path := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
app@install:
docker run --rm -it -v ${path}:/usr/src/app -w /usr/src/app node:12 yarn install
app@run:
docker run --rm -it -p 8000:8000 -v ${path}:/usr/src/app -w /usr/src/app node:12 yarn develop --host=0.0.0.0
Grâce à cela, je peux essayer les prochaines versions de Node avant de les mettre en production.
Vous pouvez trouver comment faire facilement la même chose pour tout type de langage en allant sur le site https://hub.docker.com/.
Il y a souvent une partie Run a single script
pour les images Docker principales.
Ensuite, si vous avez besoin d'aller plus loin, l'utilisation de docker-compose
semble être intéressante pour créer un "network" de conteneur (ex. ajouter une base de données, un mailcatcher, etc.).
Sources :