Als neugieriger Entwickler und Technik-Enthusiast verpassen Sie nie eine Gelegenheit, jeden Tag etwas Neues zu lernen! Dieser Drang zu lernen ist etwas, das WIR nachempfinden können. In diesem Beitrag zeigen wir dir wie man eine Rails-Anwendung andockt mit Hilfe von Rails Docker Compose. Wir brauchen Docker, also sollten Sie wissen, was es ist und warum es notwendig ist.
Beginnen wir mit der App-Entwicklung und Dockerisierung.
Was ist Docker?
Verwendung von Dockerkönnen Sie einen Dienst oder eine Anwendung mit all ihren Abhängigkeiten in eine standardisierte Einheit packen. In der Regel wird für diese Art von Einheit ein Docker-Image verwendet.
Alle Komponenten, die zum Ausführen der Anwendung benötigt werden, sind enthalten. Docker-Images enthalten Code, Laufzeiten, Bibliotheken und alles andere, was Sie auf einem Server installieren würden, um ihn ohne Docker zum Laufen zu bringen.
Wodurch sich Docker von einer virtuellen Maschine unterscheidet
Vielleicht haben Sie schon einmal eine virtuelle Maschine mit Vagrant, VirtualBox oder VMWare betrieben. Trotz der Möglichkeit, Dienste zu isolieren, sind virtuelle Maschinen aufgrund einiger signifikanter Unterschiede viel weniger effizient.
Für jede Anwendung, die Sie isolieren wollen, benötigen Sie ein ganzes Gastbetriebssystem. Außerdem kann das Hochfahren virtueller Maschinen viele Sekunden dauern, und jede kann bis zu einem Gigabyte groß sein.
Ein Docker-Container teilt sich den Kernel Ihres Hosts, und die Isolierung wird durch Gruppen und andere Kernelbibliotheken erreicht. Da Docker sehr leichtgewichtig ist, wird ein Container in der Regel in wenigen Millisekunden gestartet und benötigt nur wenig Speicherplatz für die Ausführung.
Was ist die Quintessenz?
Wäre es nicht großartig, wenn Sie Ihre Rails-Anwendung auf Ihrer Workstation isoliert, ohne RVM oder Chruby zu verwenden, und der Wechsel der Ruby-Version war einfach?
Wäre es nicht toll, wenn Sie alles, was Sie für jedes Ihrer 10 Rails-Projekte benötigen, isolieren könnten, ohne wertvollen SSD-Speicher zu verschwenden?
Wäre es nicht großartig, wenn Sie Ihren Rails-, PostgreSQL-, Redis- und Sidekiq-Stack in nur wenigen Sekunden aufsetzen könnten?
Können Sie sich vorstellen, dass Sie Ihr Projekt auf GitHub und anderen Entwickler mit einem einzigen Befehl alles in wenigen Minuten zum Laufen bringen könnte?
Dank Docker sind all diese Dinge möglich.
Die Vorteile der Verwendung von Docker
Docker bietet fünf Hauptvorteile, die Ihre Softwareentwicklungsproduktivität und -erfahrung insgesamt verbessern werden:
1. Konsistenz in verschiedenen Umgebungen
Ihre Anwendung kann mit Docker gekapselt werden, so dass sie leicht zwischen Umgebungen verschoben werden kann. Alle Umgebungen und Maschinen, die in der Lage sind, Docker auszuführen, sind in der Lage, sie auszuführen.
2. Einfache Möglichkeiten zur Erweiterung Ihres Entwicklungsteams
Ein neuer Entwickler sollte nicht erst ein 30-seitiges Dokument lesen müssen, um zu lernen, wie er Ihre Anwendung lokal ausführen kann. Neue Entwickler werden während dieses Prozesses, der einen ganzen Tag oder länger dauern kann, wahrscheinlich Fehler machen.
Mit Docker können Sie Ihre Multi-Service-Anwendung automatisiert, wiederholbar und effizient in Ihrem Team bereitstellen. Ein paar Befehle später funktioniert alles.
3. Wählen Sie eine Technologie, die Ihren Bedürfnissen entspricht
Als Start-up oder als Unternehmen, das nur eine Sprache verwendet, könnten Sie sich selbst benachteiligen. Sie können als Entwickler mit neuen Sprachen und Frameworks experimentieren, indem Sie eine Anwendung in einem Docker-Container isolieren.
Die Technologie Ihrer Wahl muss nicht mehr von anderen Entwicklern eingerichtet werden. Sie können ein Docker-Image ausführen, das Sie ihnen übergeben.
4. Stellen Sie Ihr Abbild viele Male bereit, indem Sie es einmal erstellen
Das vorgefertigte Docker-Image ermöglicht es, Ihre Anwendungen innerhalb von Millisekunden zu starten. Die Skalierbarkeit ist dadurch sehr einfach.
Zeitaufwändige Aufgaben wie die Installation von Abhängigkeiten müssen nur einmal zum Zeitpunkt der Erstellung ausgeführt werden. Sobald das Image erstellt ist, können Sie es auf verschiedene Hosts verschieben.
Dies macht Ihre Bereitstellungen nicht nur vorhersehbarer und stabiler, sondern hilft Ihnen auch bei der schnellen Skalierung.
5. Betriebsleiter und Entwickler können zusammenarbeiten
Entwickler und Betriebsleiter können mit dem Toolset von Docker zusammenarbeiten, um Anwendungen bereitzustellen.
Docker bietet eine Abstraktion. Eine Anwendung kann verteilt werden, ohne dass ein anderes Team wissen muss, wie sie einzurichten oder zu konfigurieren ist.
Außerdem wird es einfacher, Docker-Images öffentlich oder privat zu verbreiten. Wenn neue Versionen veröffentlicht werden, können Sie verfolgen, was sich geändert hat.
Die Voraussetzungen
Docker muss installiert werden. Sie können Docker auf den meisten gängigen Linux-Distributionen ausführen, und es gibt Tools, mit denen Sie es auch unter OSX und Windows ausführen können.
Linux-Benutzer werden von dieser Anleitung profitieren, aber OSX- und Windows-Benutzer werden Kommentare finden, wenn Dinge angepasst werden müssen.
Docker-Installation
Je nach Betriebssystem können Sie eine der folgenden Installationsanleitungen befolgen:
- Linux: https://docs.docker.com/get-started/
- Windows und Mac: https://www.docker.com/products/docker-desktop
Es wird empfohlen, dass Sie Docker installiert haben und dass Sie das Hallo-Welt-Beispiel aus einer der oben genannten Installationsanleitungen abgeschlossen haben, bevor Sie fortfahren.
Abschluss
Die Containerisierung einer Produktion Rails-Anwendung bringt eine Reihe von Herausforderungen mit sich, wie Sie zweifellos wissen. Mit dem Wachstum Ihrer Anwendung haben Sie vielleicht eine Reihe von Abhängigkeiten angehäuft, die eine Migration wie diese zu einer Herausforderung machen. Es spielt keine Rolle, ob es sich um einen Background Worker, einen Mailer oder ein Geheimnis handelt, es gibt etablierte Muster, um die meisten Fallstricke zu bewältigen. Die Einfachheit künftiger Änderungen und Bereitstellungen wird die Investition lohnenswert machen, sobald die anfängliche Arbeit, eine Produktionsanwendung mit Docker zum Laufen zu bringen, abgeschlossen ist.