© Liashko/Shutterstock.com
Entwickler Magazin
Teil 2: Implementierung der einzelnen Container auf Basis der festgelegten Architektur

Aus der Architektur entsteht die Lösung

Dass Docker heutzutage als ernst zu nehmende Virtualisierungslösung eingesetzt werden kann, hat sich bereits herumgesprochen. Deshalb beschäftigte sich der erste Teil dieser Serie grundlegend mit der Technologie unter der Haube von Docker und der Möglichkeit, sie als leichtgewichtige Hostinglösung für eigene Microservices zu nutzen. Im nun folgenden zweiten Teil der Artikelserie beschreibe ich die Vorgehensweise zum Aufbau einer kompletten Webseite inklusive RESTful-API und Datenbank auf Basis der beschriebenen Architektur und ihrer Realisation mittels Docker Compose und den benötigten Docker-Containern.

Sascha Sambale


Im ersten Teil der Serie haben wir Docker [1] in der Version 1.7.1 und Docker Compose [2] in der Version 1.3.1 installiert, die dank des rapiden Wachstums dieser Technologien nun bereits „veraltet“ sind. Aus diesem Grund bauen wir im zweiten Teil der Serie auf Docker 1.8.3 und Docker Compose 1.4.2 auf. Dasselbe gilt für io.js [3], dessen Entwicklung gestoppt und wieder in den Node.js-4.x-Zweig überführt wurde – ein Grund, wieder auf Node.js [4] zu bauen.

Die Architektur

Bevor wir uns an die Implementierung der Lösung mittels Docker Compose machen, müssen wir die geplante Architektur nochmals betrachten, um eine Übersicht der benötigten Docker-Images zu bekommen (Abb. 1).

Abb. 1: Webseitenarchitektur auf Basis von Docker

Für die Umsetzung der Webseite inklusive Reverse-Proxy, REST-API und Datenbank benötigen wir laut Architektur vier Docker-Container, die teilweise eine Verbindung untereinander benötigen. Das Ziel ist, dass nur der nginx-Reverse-Proxy-Container aus dem Internet erreichbar sein soll (zwei-/dreistellige Portnummer); alle weiteren Container werden intern nur über Containerlinks verknüpft (vierstellige Portnummer) und bekommen somit keine direkte Verbindung nach außen.

Wir starten mit Docker Compose

Das Management von Images und Containern mit Docker und Docker Compose umfasst drei Komponenten:

Dockerfile: Das Dockerfile wird für jedes zu erstellende Image benötigt und beschreibt dessen Inhalt. Hier wird unter anderem spezifiziert, welche Applikationen installiert werden, welche Dateien kopiert werden müssen und welcher Prozess beim Starten des Containers gestartet werden soll. Im Prinzip ist diese Datei mit einem Shell- oder Bash-Skript vergleichbar.Docker-compose.yml: Die Grundlage für Docker Compose bildet die docker-compose.yml-Datei. Sie beinhaltet die Konfiguration aller von Docker Compose orchestrierten Docker-Images und beschreibt unter anderem, welche Volumes gemountet, welche Ports genutzt und welche Container miteinander verknüpft werden sollen.Docker-compose up: Um die Container unserer Docker-Architektur zu bauen und zu starten, muss dieser Befehl ausgeführt werden. Er geht durch alle festgelegten Verzeichnisse und nutzt deren Dockerfile, um das Image zu bauen und die Container zu starten.

Alle Dateien, die wir nachfolgend erstellen werden, sind in meinem GitHub Repository [5] zu finden. Im ersten Teil der Serie haben wir bereits auf unserem Docker-Host ein Verzeichnis angelegt (/opt/docker), in dem alle unsere genutzten Docker-Dateien ...

Entwickler Magazin
Teil 2: Implementierung der einzelnen Container auf Basis der festgelegten Architektur

Aus der Architektur entsteht die Lösung

Dass Docker heutzutage als ernst zu nehmende Virtualisierungslösung eingesetzt werden kann, hat sich bereits herumgesprochen. Deshalb beschäftigte sich der erste Teil dieser Serie grundlegend mit der Technologie unter der Haube von Docker und der Möglichkeit, sie als leichtgewichtige Hostinglösung für eigene Microservices zu nutzen. Im nun folgenden zweiten Teil der Artikelserie beschreibe ich die Vorgehensweise zum Aufbau einer kompletten Webseite inklusive RESTful-API und Datenbank auf Basis der beschriebenen Architektur und ihrer Realisation mittels Docker Compose und den benötigten Docker-Containern.

Sascha Sambale


Im ersten Teil der Serie haben wir Docker [1] in der Version 1.7.1 und Docker Compose [2] in der Version 1.3.1 installiert, die dank des rapiden Wachstums dieser Technologien nun bereits „veraltet“ sind. Aus diesem Grund bauen wir im zweiten Teil der Serie auf Docker 1.8.3 und Docker Compose 1.4.2 auf. Dasselbe gilt für io.js [3], dessen Entwicklung gestoppt und wieder in den Node.js-4.x-Zweig überführt wurde – ein Grund, wieder auf Node.js [4] zu bauen.

Die Architektur

Bevor wir uns an die Implementierung der Lösung mittels Docker Compose machen, müssen wir die geplante Architektur nochmals betrachten, um eine Übersicht der benötigten Docker-Images zu bekommen (Abb. 1).

Abb. 1: Webseitenarchitektur auf Basis von Docker

Für die Umsetzung der Webseite inklusive Reverse-Proxy, REST-API und Datenbank benötigen wir laut Architektur vier Docker-Container, die teilweise eine Verbindung untereinander benötigen. Das Ziel ist, dass nur der nginx-Reverse-Proxy-Container aus dem Internet erreichbar sein soll (zwei-/dreistellige Portnummer); alle weiteren Container werden intern nur über Containerlinks verknüpft (vierstellige Portnummer) und bekommen somit keine direkte Verbindung nach außen.

Wir starten mit Docker Compose

Das Management von Images und Containern mit Docker und Docker Compose umfasst drei Komponenten:

Dockerfile: Das Dockerfile wird für jedes zu erstellende Image benötigt und beschreibt dessen Inhalt. Hier wird unter anderem spezifiziert, welche Applikationen installiert werden, welche Dateien kopiert werden müssen und welcher Prozess beim Starten des Containers gestartet werden soll. Im Prinzip ist diese Datei mit einem Shell- oder Bash-Skript vergleichbar.Docker-compose.yml: Die Grundlage für Docker Compose bildet die docker-compose.yml-Datei. Sie beinhaltet die Konfiguration aller von Docker Compose orchestrierten Docker-Images und beschreibt unter anderem, welche Volumes gemountet, welche Ports genutzt und welche Container miteinander verknüpft werden sollen.Docker-compose up: Um die Container unserer Docker-Architektur zu bauen und zu starten, muss dieser Befehl ausgeführt werden. Er geht durch alle festgelegten Verzeichnisse und nutzt deren Dockerfile, um das Image zu bauen und die Container zu starten.

Alle Dateien, die wir nachfolgend erstellen werden, sind in meinem GitHub Repository [5] zu finden. Im ersten Teil der Serie haben wir bereits auf unserem Docker-Host ein Verzeichnis angelegt (/opt/docker), in dem alle unsere genutzten Docker-Dateien ...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang