skonik
docker-compose-diagram
Python

🐳docker-compose + 🎨diagrams = docker-compose-diagram 🐳🎨

Last updated May 28, 2026
98
Stars
7
Forks
7
Issues
0
Stars/day
Attention Score
5
Language breakdown
Python 92.6%
Makefile 5.0%
Batchfile 2.3%
Files click to expand
README

docker-compose-diagram

🐳 docker-compose + 🎨 diagrams = docker-compose-diagram 🐳🎨

Motivation

This tool combines diagrams package and docker-compose allowing you to create diagrams out of docker-compose files. The tool might be helpful for documentation purposes.

Installation

Please install graphviz. Then install this util from pypi via pip or other package manager.

pip install docker-compose-diagram

Usage

compose-diagram --file docker-compose.yml --direction=TB --nodesep=1.2

Example

Let's say we have the following docker-compose file:

docker-compose.yml

version: "3.8"

services:

backend-api: build: context: .. dockerfile: docker/django/Dockerfile image: dev_backend containername: devbackend restart: always volumes: - ..:/app/ depends_on: - db - redis - dynamodb - s3_minio working_dir: "/app/backend" expose: - 8000 ports: - "8000:8000" command: runserver labels: "dockercomposediagram.icon": "django" "dockercomposediagram.cluster": "EC2 Instance" "dockercomposediagram.description": "provides REST API"

db: containername: backendapi_db image: mysql/mysql-server:8 volumes: - mysql_data:/var/lib/mysql restart: unless-stopped ports: - "3306:3306" labels: "dockercomposediagram.icon": "mysql" "dockercomposediagram.cluster": "EC2 Instance" "dockercomposediagram.description": "main database"

s3_minio: image: minio/minio:latest containername: devminio entrypoint: sh command: -c 'minio server /data --console-address ":9001"' ports: - "9000:9000" - "9001:9001" volumes: - ./minio_data:/data labels: "dockercomposediagram.icon": "s3" "dockercomposediagram.description": "stores images"

celery-worker: containername: devcelery_worker build: context: .. dockerfile: docker/django/Dockerfile image: dev_backend working_dir: /app/backend volumes: - ..:/app/ command: celery -A config worker --autoscale=8,1 -P gevent -l INFO restart: unless-stopped depends_on: - db - redis labels: "dockercomposediagram.icon": "celery" "dockercomposediagram.cluster": "EC2 Instance" "dockercomposediagram.description": "runs background jobs"

celery-beat: containername: devcelery_beat build: context: .. dockerfile: docker/django/Dockerfile image: dev_backend working_dir: /app/backend volumes: - ..:/app/ command: celery -A config beat -l INFO restart: unless-stopped depends_on: - db - redis labels: "dockercomposediagram.icon": "celery" "dockercomposediagram.cluster": "EC2 Instance" "dockercomposediagram.description": "schedules background jobs"

dynamodb: command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data" image: "amazon/dynamodb-local:latest" containername: devdynamodb ports: - "11000:8000" volumes: - "./dynamodb:/home/dynamodblocal/data" working_dir: /home/dynamodblocal labels: "dockercomposediagram.description": "stores sms codes"

redis: image: redis:alpine containername: devredis restart: unless-stopped ports: - "6379:6379" labels: "dockercomposediagram.cluster": "EC2 Instance" "dockercomposediagram.description": "used as broker"

volumes: mysql_data:

will create the following .png file docker-compose.png

Use cases

  • project documentation;
  • catching dependencies bugs in your docker-compose file;

© 2026 GitRepoTrend · skonik/docker-compose-diagram · Updated daily from GitHub