[PYTHON] Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen

Einführung

Ich habe draw.io verwendet, um das Konfigurationsdiagramm zu zeichnen, aber ich habe gehört, dass es mit Code unter Verwendung eines Tools namens Diagramme gezeichnet werden kann, also habe ich es versucht.

Umgebung

Dateistruktur

├── Dockerfile
└── test.py

Erstellen Sie ein Docker-Image

In Documentation ist Python3.6 oder höher und Graphviz installiert. Seitdem habe ich so ein Dockerfile erstellt. (Ich wollte dieses Mal Alpin verwenden, also habe ich es mit Alpin erstellt.)

FROM python:3.8-alpine

WORKDIR /app
RUN apk add --update --no-cache \
    graphviz \
    ttf-freefont \
    curl \
    bash

#Schriftart hinzufügen
RUN curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \
    && mkdir -p /usr/share/fonts/noto \
    && unzip NotoSansCJKjp-hinted.zip -d /usr/share/fonts/noto/ \
    && fc-cache -fv \
    && rm NotoSansCJKjp-hinted.zip

RUN pip install diagrams

Erstellen Sie danach die erstellte Docker-Datei. Fühlen Sie sich frei zu markieren! Nennen wir es diesmal "Diagramme".

$ docker build -t diagrams .

Bereiten Sie die Datei vor

Erstellen Sie die Datei unter Bezugnahme auf das offizielle Dokument.

from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import ElastiCache, Aurora
from diagrams.aws.network import ELB
from diagrams.aws.network import Route53

with Diagram("Test", show=False):
    dns = Route53("dns")
    lb = ELB("ALB")
    api = ECS("API")
    redis = ElastiCache("redis")

    with Cluster("DB Cluster"):
        db_test = Aurora("test")
        db_test - [Aurora("test ro")]

    dns >> lb >> api
    api >> db_test
    api >> redis
    db_test >> redis

Konfigurationsdiagramm ausgeben

Da wir diesmal Docker verwenden, starten Sie den Container wie folgt und führen Sie den Befehl aus.

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

Nach der Ausführung wird die png-Datei hinzugefügt.

├── Dockerfile
├── test.png
└── test.py

Abbildung erstellt

test.png

Schließlich

Wenn Sie nur ein Konfigurationsdiagramm zeichnen, ist draw.io in Ordnung, aber ich denke, es ist ein guter Punkt, es mit Git als Code verwalten zu können. Wenn ich jedoch nicht das gewünschte Image hatte oder wenn ich komplizierte Dinge zeichnen wollte (AZ, ECS-Aufgaben usw.), war es schwierig zu verwenden, daher denke ich, dass ich mit zukünftigen Updates verschiedene Dinge ausprobieren werde.

Referenz

Recommended Posts

Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
Ich habe versucht, [eine bestimmte Aufgabe] mit einem Raspeltorte zu automatisieren
Ich habe mit PyQt einen einfachen Texteditor erstellt
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
So zeichnen Sie ein Diagramm mit Matplotlib
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Ich habe eine Web-API erstellt
Ich habe versucht, pipenv zu verwenden, machen Sie sich also eine Notiz
Ich habe Diagramm als Code (Diagramme) ausprobiert, mit dem der Konfigurationsdiagrammcode verwaltet werden kann
Ich habe versucht, eine Clusteranalyse von Kunden anhand von Kaufdaten durchzuführen
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich habe versucht, eine Super-Resolution-Methode / ESPCN zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, WAV-Dateien mit Pydub zu synthetisieren.
Ich habe versucht, Pythonect, eine Programmiersprache für den Datenfluss, zu verwenden.
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Ich habe versucht, die Datenbank (sqlite3) mit kivy zu verwenden
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
Ich habe versucht, eine verdächtige Person mithilfe von Geolonia-Adressdaten schnell zu einem MAP zu machen
Zeichne ein Diagramm mit Julia ... Ich habe eine kleine Analyse versucht
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren