Docker pour le front-end. Partie 1. Pourquoi?

Bonjour, Habr!


Il y a quelques mois, j'ai parlé à la conférence FrontendConf 2019 avec un rapport Docker pour le front-end et je voudrais faire une petite transcription du rapport pour ceux qui aiment lire plus qu'écouter.



Je vous invite à contacter tous les développeurs Web, en particulier le front-end.


Table des matières


  1. Docker pour le front-end. Partie 1. Pourquoi?
  2. Docker pour le front-end. Partie 2. Que faites-vous?
  3. Docker pour le front-end. Partie 3. Quelques recettes

Escalade Docker


Docker n'est pas un nouvel outil, il a été publié pour la première fois en mars 2013 et depuis lors, sa popularité n'a fait que croître.



Nous voyons ici que la fréquence des demandes de Node.js a atteint un plateau et ne se déplace nulle part, tandis que les demandes de Docker continuent d'augmenter.



Ce jouet était à la conférence RIT ++ 2019 dans le cadre de la section DevOps. Et d'après mon expérience, pas une seule conférence DevOps ne va sans rapports sur Docker , tout comme les conférences frontales ne vont pas sans rapports sur la comparaison des frameworks , la configuration d'un webpack et le burnout professionnel .


Laissez-nous, dans le parti frontal, également commencer à parler de cette technologie.



Ceci est une feuille de route pour les webmasters . À gauche, les compétences requises pour tout chemin de développement. En effet, il est difficile d'imaginer un bon développeur web qui ne connaît pas Git, un terminal ou ne connaît pas HTTP.


Docker est également présent ici, mais où dans les entrailles de la branche de développement de DevOps se trouve l' Infrastructure sous forme de code -> Bloc conteneurs .


Mais nous savons que Docker est également un excellent outil de développement, pas seulement d'exploitation. Et, à mon avis, il a toutes les chances après un certain temps d'entrer dans la section Requis pour n'importe quel chemin et de devenir une exigence obligatoire dans de nombreux postes vacants de développeurs front-end.


Nous pouvons dire que nous vivons maintenant à l' ère Docker . Par conséquent, si vous êtes un développeur front-end et que vous ne l'avez pas encore rencontré, je vais vous expliquer pourquoi.


Pourquoi?


Cas 1. Relevez le backend


Le premier cas et le plus utile que nous pouvons considérer est le lancement de l'API sur notre confortable macbook. Oui, nous connaissons très bien nos technologies, mais déployer quelque chose de tiers n'est pas toujours un test facile.


Sur l'un de nos projets, le développeur front-end devait installer un tel ensemble sur l'ordinateur pour que l'API fonctionne:


* go1.11 * MySQL * Redis * Elasticsearch * Capistrano * syslog * PostgreSQL 

Heureusement, nous avions des instructions pour déployer le projet dans des fichiers README . Ils ressemblaient à ceci:


 1.  GVM (https://github.com/moovweb/gvm) 2. `gvm install go1.11.13 --binary` 3. `gvm use go1.11.13 --default` 4.        golang (`gvm linkthis`) 5.  `gb` `go get github.com/constabulary/gb/...` 6.   `git config --global url."git@git.example.com:".insteadOf "https://git.example.com/"` 7.   `gb vendor restore` 8.   9.   `npm run build` (`npm run build:dev`  ) 10.   `npm start` 

Et comme ça:


 ## Elasticsearch 1.    Elasticsearch `brew install elasticsearch` - macOS (   java) 2.   *   https://github.com/imotov/elasticsearch-analysis-morphology       ,   `/usr/local/Cellar/elasticsearch/2.3.3/libexec/bin/plugin install http://dl.bintray.com/content/imotov/elasticsearch-plugins/org/elasticsearch/elasticsearch-analysis-morphology/2.3.3/elasticsearch-analysis-morphology-2.3.3.zip` -  *    `brew services restart elasticsearch` 3.    `rake environment elasticsearch:import:model CLASS='Tag' FORCE=y ` `rake environment elasticsearch:import:model CLASS='Post' FORCE=y`   ,     ## Postgres comments db 1. `psql -U postgres -h localhost` 2. `create database comments_dev;` ## Redis install and start 1. `brew install redis` 2.   `brew services start redis` 

Que pensez-vous, combien de temps a-t-il fallu à un développeur débutant pour déployer un projet et commencer à faire des tâches?


Environ une semaine.


Naturellement, toutes les commandes de terminal ne sont pas passées la première fois, bien souvent l'instruction est devenue obsolète.


C'était considéré comme normal et convenait à tout le monde. Autrement dit, pour faire une fonctionnalité en 1 heure de travail, il fallait d'abord passer 40 heures pour déployer tous les composants localement.


Maintenant, le déploiement du projet avec tous les services de développement ressemble à ceci et avec un démarrage à froid, cela prend environ 10 minutes .


 $ docker-compose up api ... Listening localhost:8080 

Toutes les commandes de déploiement de services sont exécutées lors de l'assemblage d'images Docker. Ils sont automatisés et ne peuvent pas être périmés.


Cas 2. Stabilité


Le deuxième cas est la stabilité du système de notre ordinateur de travail.


Qui aime mettre des logiciels tiers sur son ordinateur préféré? Qui aime installer plusieurs bases de données différentes , de nouveaux compilateurs , des interprètes ?


Et cela doit être fait lorsque nous déployons une API tierce localement.


De plus, vous pouvez casser votre système et passer plusieurs heures à le restaurer.



L'utilisation de Docker pour le développement résout assez bien ce problème. Tous les logiciels tiers tournent dans des conteneurs isolés et sont facilement retirés si nécessaire.


 $ docker rm --volumes api $ docker system prune --all 

Cas 3. Nous contrôlons l'opération


Et le troisième cas dont je voudrais parler est la capacité du développeur front-end à contrôler le fonctionnement de son service. C’est à vous de décider comment son service fonctionnera en production.


Je sais que la mise en œuvre d'un projet ressemble souvent à ceci.


Avant: Les gars, j'ai tout fait. Le code dans le navet. Déployez-vous, pliz!
Admin: Comment ça se déroule?
Avant: vous collectez le nœud et distribuez les statistiques par le serveur Web à partir du dossier /build
Admin: quelle version du nœud collecter? Qu'est-ce que la commande build? Quel serveur Web distribuer?


En conséquence, pour l'administrateur, le déploiement de votre projet se transforme en une quête non moins passionnante , comme pour vous le déploiement de l'API sur la machine locale des cas précédents.


Même si le projet fonctionne sur votre ordinateur, il n'est pas du tout nécessaire que tout fonctionne également en production. Et nous obtenons le problème classique " cela fonctionne sur ma machine ."



Docker nous y aide. La solution est simple, si nous emballons notre projet dans Docker, automatisant ainsi son assemblage et la configuration du lancement, il fonctionnera également sur tous les serveurs qui prennent en charge Docker.



Un guide pour les administrateurs se résume à:


Avant: Les gars, j'ai tout fait. Vous avez collecté une image Docker pour vous. Déployez-vous, pliz!
Admin: Ok


Eh bien, avec quoi, et les administrateurs devraient certainement être en mesure de travailler avec des images Docker. Pas ça avec notre nœud.


Qu'est-ce qu'un docker?


J'espère que je pourrais expliquer pourquoi vous devriez regarder de plus près cette technologie si vous êtes un développeur front-end et ne le savez toujours pas. Mais je n'ai jamais dit ce que c'était.



J'ai l'intention d'écrire à ce sujet dans les parties suivantes de l'article et de donner quelques recettes utiles aux développeurs front-end.


Mise à jour


Source: https://habr.com/ru/post/fr478932/


All Articles