Skip to main content

Native desktop GUI to manage Docker Compose services

Project description

🐳 Dockym

Gestor visual de servicios Docker Compose

Una aplicación de escritorio nativa (PySide6) para administrar tus contenedores Docker y proyectos Compose sin tocar la terminal.

Build PyPI Publish PyPI version Python version License GitHub release


✨ Instalación

Opción 1 — Una línea (recomendada)

curl -fsSL https://raw.githubusercontent.com/jaimepa17/dockym/main/install.sh | bash

El script detecta automáticamente tu plataforma y elige el método más rápido disponible:

Prioridad Método Descripción
🥇 Binario Descarga el ejecutable pre-compilado (GitHub Release) — sin dependencias
🥈 uv uv tool install dockym — más rápido
🥉 pip pip install dockym — universal

Flags útiles: --binary (forzar binario), --uv (forzar uv), --pip (forzar pip), --version 0.1.0 (versión específica), --uninstall (desinstalar).

Opción 2 — pip (desde PyPI)

pip install dockym
dockym

Opción 3 — uv

uv tool install dockym
dockym

Opción 4 — Binario standalone

Descarga el binario desde GitHub Releases:

# Linux
tar xzf dockym-linux-x86_64.tar.gz
./Dockym

# macOS
unzip dockym-macos-arm64.zip
open Dockym.app

Opción 5 — Desde código fuente

git clone https://github.com/jaimepa17/dockym.git
cd dockym
uv sync
uv run dockym

Capturas

Ventana principal Command palette
Ventana principal Command palette (Ctrl+F)
Selector de tema Configuración
Selector de tema Configuración
Docker Prune
Docker Prune

Características

🖥️ Interfaz nativa

  • Ventana frameless con barra de título personalizada, arrastre nativo, redimensionado desde bordes
  • Barra de menú completa con atajos de teclado
  • System tray con minimizar al cerrar
  • Soporte HiDPI con escalado automático (PassThrough)
  • 4 temas visuales: Dark (GitHub-dark), Dark VS Code, Dark Claude, Light
  • Notificaciones toast animadas con auto-descarte y pausa al hover
  • Panel de acciones configurable (derecha, izquierda, abajo)

🐳 Gestión de Docker

  • Escaneo automático de directorios en busca de archivos docker-compose.yml / compose.yaml
  • Árbol de proyectos y servicios con estados en vivo (running, stopped, paused, etc.)
  • Iniciar / Detener / Reiniciar servicios individuales o proyectos completos
  • Operaciones por lote: iniciar, detener, reiniciar o eliminar múltiples contenedores
  • Ver logs en tiempo real con salida monospace
  • Ejecutar comandos dentro de contenedores (exec)
  • Editor de .env inline
  • Prune de contenedores, imágenes, volúmenes y redes (con confirmación)
  • Pull de imágenes para todos los servicios
  • Reiniciar todos los contenedores activos

⚡ Productividad

  • Command palette (Ctrl+F) para buscar y navegar entre proyectos/servicios al instante
  • Auto-refresh configurable (por defecto cada 5s)
  • Eventos en vivo — la UI se actualiza automáticamente cuando un contenedor cambia de estado
  • Plantillas de servicios (MySQL, PostgreSQL, Redis, MongoDB, Nginx, Node.js, Adminer, Mailpit) — agrega servicios a tu compose con un clic
  • Exportar/Importar configuración como JSON
  • Atajos de teclado:
    Tecla Acción
    Ctrl+F Command palette
    Ctrl+E Exec en contenedor
    Ctrl+L Ver logs
    Ctrl+R Reiniciar servicio
    F5 Refrescar
    Ctrl+, Configuración
    Ctrl+Shift+A Apariencia
    Ctrl+Q Salir

🔧 Técnicas

  • Cliente Docker thread-safe con singleton, health checks y backoff exponencial
  • Auto-detección de socket Docker (estándar, Snap, rootless, Podman)
  • Auto-detección de Compose V2 vs V1
  • Caché de parsing YAML con validación por mtime + TTL
  • Worker pool con QThreadPool para operaciones en segundo plano
  • Iconos 100% vectoriales renderizados con QPainter — sin assets externos
  • Config atómica con temp file + os.replace()

Guía de uso rápido

1. Escaneo inicial

Al abrir Dockym, escanea automáticamente los directorios configurados en busca de archivos Compose. Los proyectos aparecen en el panel izquierdo con sus servicios.

💡 Tip: Puedes agregar/quitar directorios en Edit → Settings (Ctrl+,).

2. Gestiona tus servicios

Acción Cómo
▶️ Iniciar servicio Click ▶️ en la fila o selecciona y da Start
⏹️ Detener servicio Click ⏹️ en la fila o selecciona y da Stop
🔄 Reiniciar Click 🔄 o pulsa Ctrl+R
📋 Ver logs Selecciona el servicio → Tools → Logs
💻 Executar comando Selecciona → Tools → Exec (Ctrl+E)
✏️ Editar .env Selecciona → Tools → .env
🗑️ Prune Docker Action panel → Quick actions → Prune

3. Command palette

Pulsa Ctrl+F para abrir la paleta. Escribe el nombre de un proyecto o servicio para saltar directamente a él.

4. Plantillas de servicios

Ve a File → Add service from template y elige entre MySQL, PostgreSQL, Redis, MongoDB, Nginx, Node.js, Adminer o Mailpit. El servicio se agrega a tu archivo Compose activo.


Configuración

La configuración se guarda en ~/.config/dockym/config.json.

Opción Tipo Defecto Descripción
paths [str] ["~/Documentos"] Directorios a escanear
active_profile str "dev" Perfil activo
refresh_interval int 5 Intervalo de auto-refresh (segundos)
minimize_to_tray bool true Minimizar a bandeja al cerrar
panel_position str "right" Posición del panel (right, left, bottom)
theme str "dark" Tema visual
font_family str "Inter" Fuente de la interfaz

Desarrollo

Setup

git clone https://github.com/jaimepa17/dockym.git
cd dockym
uv sync --dev

Modo dev con auto-reload

uv run python tools/dev.py

El proyecto usa watchfiles para reiniciar automáticamente la app cuando detecta cambios en src/dockym/.

Flags disponibles:

Flag Descripción
--once Ejecuta una vez, sin file watcher
--offscreen Modo headless (para testing)
--verbose Muestra eventos de cambio de archivos

Formato y linting

El proyecto usa Ruff. Ejecuta:

ruff check src/
ruff format src/

Arquitectura

src/dockym/
├── __init__.py          # Entry point → main()
├── __main__.py          # python -m dockym
├── app.py               # QApplication, iconos, run loop
├── engine/              # Core Docker engine
│   ├── client.py        # Cliente Docker thread-safe (singleton)
│   ├── compose.py       # Ejecutor async de docker compose
│   ├── events.py        # Monitor de eventos Docker en vivo
│   ├── scanner.py       # Escáner de archivos Compose con caché
│   └── templates.py     # 8 plantillas de servicios
├── models/              # Modelos de datos
│   ├── config.py        # Config + persistencia JSON
│   └── project.py       # Project & Service dataclasses
├── ui/                  # Interfaz de usuario
│   ├── main_window.py   # Ventana principal + orquestación
│   ├── title_bar.py     # Barra de título frameless
│   ├── service_table.py # Árbol de proyectos/servicios
│   ├── action_panel.py  # Panel de acciones contextual
│   ├── command_palette.py # Búsqueda global (Ctrl+F)
│   ├── notification.py  # Toast + Notification Center
│   ├── theme.py         # Generador de QSS (4 temas)
│   ├── icons.py         # Todos los iconos (QPainter)
│   ├── exec_dialog.py   # Diálogo exec
│   ├── logs_dialog.py   # Visor de logs
│   ├── env_dialog.py    # Editor .env
│   ├── prune_dialog.py  # Diálogo de prune
│   ├── settings_dialog.py   # Configuración
│   ├── appearance_dialog.py # Apariencia (tema/fuente)
│   ├── template_dialog.py   # Selector de plantillas
│   ├── export_dialog.py     # Export/Import JSON
│   └── tray_manager.py  # Bandeja del sistema
└── workers/             # Operaciones en segundo plano
    └── docker_worker.py # QThreadPool workers

Tecnologías

Tecnología Versión Propósito
Python ≥ 3.11 Lenguaje principal
PySide6 ≥ 6.7 UI nativa (Qt6)
Docker SDK ≥ 7.0 API de Docker
PyYAML ≥ 6.0 Parseo de archivos Compose
uv Gestor de dependencias
PyInstaller ≥ 6.0 Build standalone (opcional)

Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Haz fork del repo
  2. Crea una rama: git checkout -b feature/mi-feature
  3. Haz tus cambios
  4. Ejecuta Ruff: ruff check . && ruff format .
  5. Commit: git commit -m "feat: descripción"
  6. Push y abre un Pull Request

Licencia

MIT © Jaime Luna


Hecho con ❤️ y mucho ☕

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dockym-0.2.0.tar.gz (104.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dockym-0.2.0-py3-none-any.whl (120.8 kB view details)

Uploaded Python 3

File details

Details for the file dockym-0.2.0.tar.gz.

File metadata

  • Download URL: dockym-0.2.0.tar.gz
  • Upload date:
  • Size: 104.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dockym-0.2.0.tar.gz
Algorithm Hash digest
SHA256 181dc56ebf99850490315e2b24352bb5e6e80a18846bc7752bb5bfbb65435fc3
MD5 1a77f52fc92cd129760ad76ac2530bb0
BLAKE2b-256 88d44ab693f1d4d05479d757dc935548228f77769cee3eb2af27428e38ea9b42

See more details on using hashes here.

File details

Details for the file dockym-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dockym-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 120.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dockym-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7709a8383af2fdf88fd7cfd5475eb7f35d2761ff62d0e84433a60eccfa50259e
MD5 e48047fa9087c240091563d1728389fa
BLAKE2b-256 08e7591e3b7646a336704ae89c3afed60c30c307710e11653c37ea698526e95c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page