Hallo habr
Vor ein paar Monaten sprach ich auf der FrontendConf- Konferenz 2019 mit einem Docker- Bericht für das Frontend und möchte eine kleine Abschrift des Berichts für diejenigen machen, die mehr lesen als zuhören möchten.
Ich lade Sie ein, alle Webentwickler, insbesondere das Front-End, anzusprechen.
Inhalt
- Docker für das Frontend. Teil 1. Warum?
- Docker für das Frontend. Teil 2. Was bist du?
- Docker für das Frontend. Teil 3. Einige Rezepte
Climbing Docker
Das Docker- Tool ist nicht neu. Es wurde erstmals im März 2013 veröffentlicht und erfreut sich seitdem immer größerer Beliebtheit.

Hier sehen wir, dass die Häufigkeit der Anfragen nach Node.js ein Plateau erreicht hat und sich nirgendwo bewegt, während die Anfragen nach Docker weiter zunehmen.

Dieses Spielzeug war auf der RIT ++ 2019- Konferenz als Teil der DevOps-Sektion. Und meiner Erfahrung nach kommt keine einzige DevOps-Konferenz ohne Berichte über Docker aus , genauso wie Front-End-Konferenzen nicht ohne Berichte über das Vergleichen von Frameworks , das Einrichten eines Webpacks und professionelles Burnout .
Lassen Sie uns in der Front-End-Partei auch anfangen, über diese Technologie zu sprechen.

Dies ist eine Webmaster-Roadmap . Auf der linken Seite sind die Fähigkeiten aufgeführt, die für einen Entwicklungspfad erforderlich sind. In der Tat ist es schwierig, sich einen guten Webentwickler vorzustellen, der Git, ein Terminal oder HTTP nicht kennt.
Docker ist auch hier vorhanden, aber wo in den Eingeweiden des DevOps -Entwicklungszweigs befindet sich in der Infrastruktur ein Code -> Container- Block.
Wir wissen aber, dass Docker auch ein großartiges Werkzeug für die Entwicklung ist, nicht nur für die Ausbeutung. Und meiner Meinung nach hat er nach einer Weile die Chance, in den Bereich Erforderlich für jeden Pfad einzusteigen und in vielen Stellenangeboten von Front-End-Entwicklern zur Pflicht zu werden.
Wir können sagen, dass wir jetzt in der Docker-Ära leben . Wenn Sie ein Front-End-Entwickler sind und ihn noch nicht kennengelernt haben, erkläre ich Ihnen, warum Sie dies tun sollten.
Warum?
Fall 1. Öffnen Sie das Backend
Der erste und nützlichste Fall, den wir in Betracht ziehen können, ist das Starten der API auf unserem gemütlichen MacBook. Ja, wir kennen unsere Technologien sehr gut, aber die Bereitstellung von Drittanbietern ist immer kein einfacher Test.
In einem unserer Projekte musste der Front-End-Entwickler einen solchen Satz auf dem Computer installieren, damit die API funktioniert:
* go1.11 * MySQL * Redis * Elasticsearch * Capistrano * syslog * PostgreSQL
Glücklicherweise hatten wir Anweisungen zum Bereitstellen des Projekts in README- Dateien. Sie sahen ungefähr so aus:
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`
Und so:
## 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`
Was denkst du, wie lange hat ein unerfahrener Entwickler gebraucht, um ein Projekt zu implementieren und Aufgaben zu erledigen?
Ungefähr eine Woche.
Natürlich haben nicht alle Terminalbefehle das erste Mal bestanden, und die Anweisung wurde häufig veraltet.
Es galt als normal und passte allen. Das heißt, um eine Funktion in einer Arbeitsstunde zu erstellen, mussten zunächst 40 Stunden aufgewendet werden , um alle Komponenten lokal bereitzustellen.
Jetzt sieht die Bereitstellung des Projekts mit allen Diensten für die Entwicklung so aus und dauert bei einem Kaltstart etwa 10 Minuten .
$ docker-compose up api ... Listening localhost:8080
Alle Servicebereitstellungsbefehle werden während der Zusammenstellung von Docker-Images ausgeführt. Sie sind automatisiert und können nicht veraltet sein.
Fall 2. Stabilität
Der zweite Fall ist die Stabilität des Systems unseres Arbeitscomputers.
Wer möchte Software von Drittanbietern auf seinem Lieblingscomputer speichern? Wer möchte verschiedene Datenbanken , neue Compiler , Interpreter installieren?
Dies muss geschehen, wenn wir eine lokale Drittanbieter-API bereitstellen.
Außerdem können Sie Ihr System beschädigen und mehrere Stunden damit verbringen, es wiederherzustellen.

Die Verwendung von Docker für die Entwicklung erledigt dieses Problem recht gut. Alle Software von Drittanbietern dreht sich in isolierten Behältern und kann bei Bedarf einfach entfernt werden.
$ docker rm --volumes api $ docker system prune --all
Fall 3. Wir kontrollieren den Betrieb
Und der dritte Fall, über den ich sprechen möchte, ist die Fähigkeit des Front-End-Entwicklers, den Betrieb seines Dienstes zu steuern. Es liegt an Ihnen, zu entscheiden, wie sein Service in der Produktion funktioniert.
Ich weiß, dass die Inbetriebnahme eines Projekts oft so aussieht.
Vorderseite: Leute, ich habe alles gemacht. Der Code in der Rübe. Roll out, bitte!
Admin: Wie läuft es ab?
Vorderseite: Sie sammeln den Knoten und verteilen die Statik über den Webserver aus dem Ordner /build
Admin: Welche Version des Knotens soll gesammelt werden? Was ist der Build-Befehl? Welchen Webserver soll ich verteilen?
Aus diesem Grund wird die Bereitstellung Ihres Projekts für den Administrator zu einer nicht weniger aufregenden Aufgabe , als für Sie die Bereitstellung der API auf dem lokalen Computer aus den vorherigen Fällen.
Auch wenn das Projekt auf Ihrem Computer funktioniert, ist es keineswegs erforderlich, dass auch in der Produktion alles funktioniert. Und wir bekommen das klassische Problem " es funktioniert auf meiner Maschine ."

Docker hilft uns dabei. Die Lösung ist einfach: Wenn wir unser Projekt in Docker packen und dadurch dessen Zusammenstellung und Start automatisieren , funktioniert es auf allen Servern, die Docker unterstützen, gleichermaßen .

Ein Leitfaden für Administratoren lautet:
Vorderseite: Leute, ich habe alles gemacht. Hat ein Docker-Bild für Sie gesammelt. Roll out, bitte!
Admin: Ok
Nun, womit und Administratoren sollten definitiv in der Lage sein, mit Docker-Images zu arbeiten. Nicht so bei unserem Knoten.
Was ist ein Hafenarbeiter?
Ich hoffe, ich konnte erklären, warum Sie sich diese Technologie genauer ansehen sollten, wenn Sie ein Front-End-Entwickler sind und sie noch nicht kennen. Aber ich habe nie gesagt, was es ist.

Ich habe vor, in den folgenden Abschnitten des Artikels darüber zu schreiben und einige nützliche Rezepte für Front-End-Entwickler anzugeben.
Aktualisiert