[PYTHON] J'ai écrit un diagramme de configuration du système avec des diagrammes sur Docker

J'ai pensé qu'il serait bon de voir l'article "Dessiner un diagramme de configuration du système en Python en utilisant Diagrams | Developers.IO", mais Python Je n'avais pas d'environnement, alors je l'ai essayé avec Docker.

Préparer une image Docker

La documentation officielle dit «Installer les diagrammes» avec «pip», installez également «Graphviz». Créez donc un Dockerfile en conséquence.

Dockerfile


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

Construire. Conservez une image Docker nommée diagrams pour une exécution facile plus tard.

$ docker build -t diagrams .

Ceci termine la création de l'image Docker diagrams: latest.

Préparez le fichier Diagrammes

Préparez le fichier Official Quickstart.

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")

C'est assez intuitif, mais consultez la documentation officielle pour plus de détails. Document officiel anglais mais facile à lire car simple et de petit volume. De plus, Exemples est facile à comprendre.

Exécuter des diagrammes

Selon la documentation officielle, si vous avez un environnement Python local, vous pouvez l'exécuter avec $ python diagram.py.

Puisque nous utilisons le conteneur Docker cette fois, c'est OK si nous montons en volume le répertoire actuel où diagram.py est créé et exécutons la commande python diagram.py.

Actuellement, le répertoire actuel ressemble à ceci.

$ ls
Dockerfile      diagram.py

Exécutez le conteneur.

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

Si vous ls à nouveau, un fichier png sera généré.

$ ls 
Dockerfile      diagram.py      web_service.png

Vérifiez le contenu de web_service.png.

$ open web_service.png

web_service.png Le résultat est conforme au Quick Start officiel!

Résumé

J'ai pu facilement essayer des diagrammes à l'aide de Docker. J'ai essayé des exemples et fait un diagramme de configuration comme je voulais le faire, mais tout ce que je peux dire, c'est qu'il peut être géré par code, qu'il est simple et facile à voir, et qu'il y a beaucoup de nœuds (comme des icônes). D'un autre côté, en ce qui concerne les démangeaisons, quand cela se complique, cela peut être comme "Le placement des nœuds n'est pas là!", Et il semble que vous ne pouvez pas écrire un cluster qui chevauche le cluster, alors "Appliquez le même groupe de sécurité à différentes instances AZ. J'ai senti qu'il était difficile d'exprimer quelque chose comme.

Quoi qu'il en soit, je pense que ça vaut le coup d'essayer.

References

Recommended Posts

J'ai écrit un diagramme de configuration du système avec des diagrammes sur Docker
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
J'ai essayé d'afficher l'interface graphique sur Mac avec le système X Window
J'ai essayé de créer facilement un système de présence entièrement automatique avec Selenium + Python
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
[Go + Gin] J'ai essayé de créer un environnement Docker
J'ai essayé d'implémenter une ligne moyenne mobile de volume avec Quantx
J'ai essayé de créer automatiquement un rapport avec la chaîne de Markov
J'ai essayé de résoudre le problème d'optimisation des combinaisons avec Qiskit
J'ai essayé de commencer avec Hy ・ Définir une classe
J'ai essayé de trier une colonne FizzBuzz aléatoire avec un tri à bulles.
[Visualisation] Je veux dessiner un beau graphique avec Plotly
J'ai essayé d'écrire dans un modèle de langage profondément appris
J'ai essayé de créer un projet en utilisant Python sur Docker avec PyCharm, mais cela a fonctionné avec Docker Compose
[Démarrage du shell] J'ai essayé d'afficher le shell sur le téléviseur avec un G-cluster à carte Linux bon marché
J'ai essayé de créer un service qui vend des données apprises par machine à une vitesse explosive avec Docker
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer un système qui ne récupère que les tweets supprimés
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
Un mémorandum lors de l'acquisition automatique avec du sélénium
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de démarrer avec Bitcoin Systre le week-end
J'ai essayé de créer des taureaux et des vaches avec un programme shell
J'ai essayé de résumer les remarques de tout le monde sur le slack avec wordcloud (Python)
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
Du «dessin» à «l'écriture» du diagramme de configuration: essayez de dessiner le diagramme de configuration AWS avec des diagrammes
J'ai essayé de faire une étrange citation pour Jojo avec LSTM
J'ai essayé le diagramme en tant que code (diagrammes) qui peut gérer le code du diagramme de configuration
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai essayé d'utiliser "Asciichart Py" qui peut dessiner un beau graphique sur la console avec Python.
J'ai essayé de créer une configuration RAID logicielle SATA qui démarre le système d'exploitation sur Ubuntu Server
J'ai essayé de créer un linebot (implémentation)
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de créer un linebot (préparation)
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de commencer avec Hy
J'ai essayé un langage fonctionnel avec Python
J'ai essayé d'implémenter CVAE avec PyTorch
J'ai créé une API Web
J'ai essayé de résoudre TSP avec QAOA
J'ai créé un fichier de configuration avec Python
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.0) sur un processeur Windows!
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé de mettre en œuvre une blockchain qui fonctionne réellement avec environ 170 lignes
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Development] (2/3)
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)