Modius - Techblog

  • facebook
  • twitter
  • instagram
  • feedburner
  • github
  • youtube
  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Docker Microservices – Key-Value Store mit Python und Redis

Veröffentlicht am 15. Juni 2018 von Christian Piazzi 1 Kommentar , Aktualisiert am 12. Juli 2018

Beitragsbild - Docker Microservices - gestapelte ContainerImmer wieder hört man von Docker im Zusammenhang mit dem Thema Microservices. Dies wollen wir uns in diesem Artikel einmal genauer anschauen.

Dafür werden wir als erstes klären, was genau Microservices sind. Anschließend erstellen wir einen Docker Container mit einem Redis Script in Python. Danach starten wir einen Redis Container und erstellen beim Starten unserer Python App einen Link zu diesen Container. Als letztes werden wir dann sehen, dass der Zugriff vom Python Container auf den Redis Container funktioniert.

Inhaltsverzeichnis

  • 1 Was sind Microservices
  • 2 Erstellen eines Apache Redis Python Scripts
  • 3 Starten des Redis und Python Containers
  • 4 Prüfen des kleinen Microservices Setup

Was sind Microservices

Im wesentlichen versteht man unter Microservices die Modularisierung von Software. Hierbei gibt es diverse Ansätze wie zum Beispiel eine Modularisierung nach Klasse oder Packages.

Eine wesentlicher Bestandteil von Microservices ist hierbei, dass unabhängige Deployment der einzelnen Komponenten. So können einzelne Microservices ausgetauscht werden, ohne das alle Bestandteile der Applikation angefasst werden müssen.

Diese Modularisierung lässt sich sehr gut mit Docker Containern realisieren. Dabei bilden dann mehrere Docker Container am Ende eine Applikation. Für die Kommunikation zwischen den einzelnen Container kann entweder eine REST Schnittstelle oder ein Set von URLs verwendet werden.

Neben dem Vorteil des Unabhängigen Deployments hat die Realisierung von Microservices mit Docker noch ein paar weitere Konsequenzen:

  • jeder Microservice kann in einer anderen Programmiersprache realisiert werden
  • innerhalb eines Docker Containers kann fast jede Infrastruktur laufen
  • die Microservices können einzeln skaliert werden.
  • Steigerung der Robustheit, da sich Ressourcenprobleme nur auf den Microservice auswirken

Erstellen eines Apache Redis Python Scripts

Zum Testen, dass der Python Container auf den Redis Container zugreift, verwenden wir ein kleines Test Script. Dafür legen wir uns einen Ordner Microservices an. In diesem erstellen wir wiederum einen Ordner app. Im app Ordner erstellen wir einen Datei app.py mit dem folgenden Inhalt.

Python
1
2
3
4
5
6
7
import redis
 
client = redis.StrictRedis(host='redis', port=6379, db=0)
 
client.set('foo', 'bar')
value = client.get('foo')
print(value)

Beim Erstellen des Redis Client im Code, geben wir als Adresse den Namen redis ein. Auf diesen Namen werden wir dann den Redis Docker Container linken.

Nun müssen wir noch ein Dockerfile erstellen um den Python Container zu bauen. Dafür legen wir eine Datei mit dem Namen Dockerfile direkt im microservices Container an. Der Inhalt des Dockerfiles sieht sehr ähnlich aus, wie im Artikel Python Flask App mit Docker deployen:

1
2
3
4
5
6
7
FROM python:3.6
RUN pip install redis
RUN useradd -ms /bin/bash modius
USER modius
WORKDIR /app
COPY app /app
CMD ["python","-u", "app.py"]

Nun können wir ein Docker Image erstellen, als Grundlage für unseren Docker Container.

1
docker build -t pyredis:v0.1 .

Starten des Redis und Python Containers

Als erstes starten wir den Redis Container, da wir beim Starten des Python Containers auf diesen verlinken wollen. Wenn der Redis Container noch nicht auf dem System vorhanden ist, wird dieser beim Startversuch automatisch vom DockerHub heruntergeladen

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -d --name redis redis:3.2.0
Unable to find image 'redis:3.2.0' locally
3.2.0: Pulling from library/redis
51f5c6a04d83: Pull complete
6c8ccd839b1d: Pull complete
0fded1c9651d: Pull complete
7f1aa6a73799: Pull complete
658be2e58dbd: Pull complete
3d3b67be53f9: Pull complete
8a88e1919daf: Pull complete
Digest: sha256:4b24131101fa0117bcaa18ac37055fffd9176aa1a240392bb8ea85e0be50f2ce
Status: Downloaded newer image for redis:3.2.0
54fad25b3266688d305c4c0c01f8add5195e0740f4c33adf4dc06765b01c0b78

Anschließend können wir den Container mit der Python App starten. Dabei benutzt man den Parameter –link um einen Link zu einem anderen Container herzustellen. Dadurch kann der Python Container mit dem Redis Container Daten austauschen.

1
2
docker run -d --name pyredis --link redis pyredis:v0.1
5bd8972cc206bf7baf1e203b31efe335987d854b8b9c58368c5fc97b3cce3a9c

Prüfen des kleinen Microservices Setup

In dem Python Skript kontaktieren wir den Redis Container und setzten einen Key-Value Eintrag  foo / bar. Anschließend wollen wir von Redis den Value zum Key foo wissen. Wenn alles richtig geklappt hat, steht im Log des Docker Containers nun bar. Dies kann mit dem folgenden Befehl geprüft werden.

1
2
docker logs pyredis
b'bar'

Im folgenden Artikel schauen wir uns an, wie man das ganze nun auch automatisiert ausführen kann. Schaut doch mal rein: Docker Compose – Automatisiertes starten von Microservices

Kategorie: DevOps, Docker, Linux Tags: Docker, Key Value Store, Microservice, Redis

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Trackbacks

  1. Docker Compose - Automatisiertes starten von Microservices sagt:
    27. Oktober 2020 um 15:47 Uhr

    […] Artikel Docker Microservices – Key-Value Store mit Python und Redis haben wir uns angeschaut, wie man mit Docker eine Microservices Setup realisieren kann. Da so […]

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Beliebte Artikel

  • ioBroker auf dem Raspberry Pi installieren und konfigurieren
  • Docker Container – anzeigen, starten, stoppen und löschen
  • MQTT Broker auf dem Raspberry Pi
  • Nextcloud https mit self-signed Zertifikat einrichten
  • systemctl / systemd richtig verwenden

Neueste Kommentare

  • Herbert bei Eigenes Docker Images mit Dockerfile erstellen
  • HerryStoffel bei Nextcloud https mit self-signed Zertifikat einrichten
  • DerEchteDaniel bei BLTouch Upgrade für den Ender 3 Pro
  • Peja bei Creality Ender 3 Pro
  • DerEchteDaniel bei Creality Ender 3 Pro

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga 2 Icinga2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2021 · Outreach Pro on Genesis Framework · WordPress · Anmelden