Dagger & Dockerfile
On build des packages, on utilise les commandes Dagger, mais on ne va pas réinventer la roue non ? On avait l’habitude des Dockerfile, et tous nos projets les utilisent déjà, donc, on va réutiliser ce code avec Dagger!
On va donc essayer de build notre Dockerfile, et le publish sur un registrie privé type Scaleway.
Dockerfile
Pour l’instant, je vais partir sur un Dockerfile très très simple (Oui ce n’est pas en user node, mais c’est pour la démo)
Le voici :
Daggerization
Init
Pour daggerizer notre projet, on va déjà init dagger avec le SDK TypeScript.
Ensuite, dans mon dagger.json je vais exclure les nodes_modules pour éviter de les copier si je suis en plein dev. Ceci peut poser problème entre les différentes versions d’OS et de node.
Build
On va déjà créer une fonction pour faire une installation des dépendances.
Cette fonction va nous permettre de retourner le répertoire avec le npm install qu’on utilisera plus tard.
On fait déjà un test ?
Super ! Maintenant on va build le Dockerfile.
Build
Avant d’essayer de publish, nous allons essayer de tester le container en live depuis dagger.
C’est possible ???
Eh oui, vous pouvez créer des services que vous exposez sur votre hôte, si vous n’exposez pas, vous pouvez utiliser le service comme endpoint http pour vos autres fonctions.
Je souhaite, exposer en tant que services pour vérifier que ça fonctionne et que le Dockerfile est bien pris en compte.
Si on lance simplement la commande suivante, le service va se lancer mais ne sera pas disponible sur notre hôte.
Nous allons donc exposer le service avec --ports
Notre conteneur répond bien !
Parfait, maintenant on va le remettre en mode container :
Et si on test d’exposer sur notre hôte en mode container ?
Ça fonctionne ! 😲
Conclusion
On a bien notre fonction qui permet le build avec le Dockerfile, pour le publish sur un registre privé, il faudra aller à la page suivante !
Je préfère séparer pour que les informations soient digestes et bien découpées.
Code Dagger
Voici le index.ts de dagger complet :
GitHub
https://github.com/Killian-Aidalinfo/node-api-demo-dockerfile