[PYTHON] Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben

Ich dachte, es wäre gut, den Artikel "Zeichnen eines Systemkonfigurationsdiagramms in Python mit Diagrams | Developers.IO" zu sehen, aber Python Ich hatte keine Umgebung, also habe ich es mit Docker versucht.

Bereiten Sie ein Docker-Image vor

Offizielle Dokumentation lautet "Diamanten mit" pip "installieren," Graphviz "installieren Erstellen Sie also eine entsprechende Docker-Datei.

Dockerfile


FROM python:latest
WORKDIR /app
RUN apt update && \
    apt install -y python3-pygraphviz && \
    pip install diagrams

Bauen. Bewahren Sie ein Docker-Image mit dem Namen "Diagramme" auf, um es später einfach ausführen zu können.

$ docker build -t diagrams .

Damit ist die Erstellung des Docker-Images "Diagramme: Neuestes" abgeschlossen.

Bereiten Sie die Diagrammdatei vor

Bereiten Sie die Datei Official Quickstart vor.

diagram.py


from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service", show=False):
    ELB("lb") >> EC2("web") >> RDS("userdb")

Die Bedeutung ist relativ intuitiv, aber siehe das offizielle Dokument für weitere Details. Offizielles Dokument Englisch, aber leicht zu lesen, da es einfach und klein ist. Auch Beispiele ist leicht zu verstehen.

Diagramme ausführen

Laut offizieller Dokumentation können Sie eine lokale Python-Umgebung mit $ python chart.py ausführen.

Da wir diesmal einen Docker-Container verwenden, ist es in Ordnung, wenn wir das aktuelle Verzeichnis, in dem diagramm.py erstellt wird, mounten und den Befehl python chart.py ausführen.

Derzeit sieht das aktuelle Verzeichnis so aus.

$ ls
Dockerfile      diagram.py

Führen Sie den Container aus.

$ docker run --rm -v `pwd`:/app diagrams python diagram.py

Wenn Sie erneut "ls" eingeben, wird eine "png" -Datei generiert.

$ ls 
Dockerfile      diagram.py      web_service.png

Überprüfen Sie den Inhalt von web_service.png.

$ open web_service.png

web_service.png Das Ergebnis entspricht dem offiziellen Schnellstart!

Zusammenfassung

Ich konnte Diagramme einfach mit Docker ausprobieren. Ich habe Beispiele ausprobiert und ein Konfigurationsdiagramm erstellt, wie ich es erstellen wollte, aber alles, was ich sagen kann, ist "es kann per Code verwaltet werden", "einfach und leicht zu sehen" und "viele Knoten (wie Symbole)". Auf der anderen Seite kann es beim Jucken sein, wenn es kompliziert wird, wie "Knotenplatzierung ist nicht vorhanden!" Und es scheint, dass Sie keinen Cluster schreiben können, der sich über Cluster erstreckt. Wenden Sie also dieselbe Sicherheitsgruppe auf verschiedene AZ-Instanzen an. Ich hatte das Gefühl, dass es schwierig war, so etwas auszudrücken.

In jedem Fall ist es einen Versuch wert.

References

Recommended Posts

Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe versucht, die GUI auf einem Mac mit X Window System anzuzeigen
Ich habe versucht, mit Selenium + Python einfach ein vollautomatisches Anwesenheitssystem zu erstellen
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
[Go + Gin] Ich habe versucht, eine Docker-Umgebung zu erstellen
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren
Ich habe versucht, automatisch einen Bericht mit der Markov-Kette zu erstellen
Ich habe versucht, das Problem der Kombinationsoptimierung mit Qiskit zu lösen
Ich habe versucht, mit Hy ・ Define a class zu beginnen
Ich habe versucht, eine zufällige FizzBuzz-Spalte mit Blasensortierung zu sortieren.
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Ich habe versucht, ein Projekt mit Python on Docker mit PyCharm zu erstellen, aber es hat mit Docker Compose funktioniert
[Shell-Start] Ich habe versucht, die Shell mit einem billigen Linux-Board-G-Cluster auf dem Fernseher anzuzeigen
Ich habe versucht, mit Docker einen Dienst aufzubauen, der maschinell erlernte Daten mit explosiver Geschwindigkeit verkauft
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, ein System zu erstellen, das nur gelöschte Tweets abruft
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ein Memorandum beim automatischen Erwerb mit Selen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe am Wochenende versucht, mit Bitcoin Systre zu beginnen
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich habe versucht, alle Bemerkungen von Slack mit Wordcloud (Python) zusammenzufassen.
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Vom "Zeichnen" zum "Schreiben" des Konfigurationsdiagramms: Zeichnen Sie das AWS-Konfigurationsdiagramm mit Diagrammen
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe Diagramm als Code (Diagramme) ausprobiert, mit dem der Konfigurationsdiagrammcode verwaltet werden kann
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe versucht, "Asciichart Py" zu verwenden, mit dem mit Python ein schönes Diagramm auf der Konsole gezeichnet werden kann.
Ich habe versucht, eine SATA-Software-RAID-Konfiguration zu erstellen, die das Betriebssystem unter Ubuntu Server startet
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich habe versucht, mit Hy anzufangen
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe eine Web-API erstellt
Ich habe versucht, TSP mit QAOA zu lösen
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe versucht, Objekte mit YOLO v3 (TensorFlow 2.0) auf einer Windows-CPU zu erkennen!
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe versucht, eine Blockchain zu implementieren, die tatsächlich mit ungefähr 170 Zeilen funktioniert
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Entwicklung] (2/3) zu erstellen.
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.